@anvia/studio 0.7.20 → 0.7.22
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/dist/ui/assets/{evals-page-CGlZpEpK.js → evals-page-0x7pIugn.js} +2 -2
- package/dist/ui/assets/{evals-page-CGlZpEpK.js.map → evals-page-0x7pIugn.js.map} +1 -1
- package/dist/ui/assets/index-NsFU1TN1.js +55 -0
- package/dist/ui/assets/index-NsFU1TN1.js.map +1 -0
- package/dist/ui/assets/{knowledge-page-DFqZ3jWS.js → knowledge-page-CYLD4cys.js} +2 -2
- package/dist/ui/assets/{knowledge-page-DFqZ3jWS.js.map → knowledge-page-CYLD4cys.js.map} +1 -1
- package/dist/ui/assets/{mcps-page-BcygvPZJ.js → mcps-page-Qd4wgj-B.js} +2 -2
- package/dist/ui/assets/{mcps-page-BcygvPZJ.js.map → mcps-page-Qd4wgj-B.js.map} +1 -1
- package/dist/ui/assets/{memory-page-B3TXiZ88.js → memory-page-krtr9o5d.js} +2 -2
- package/dist/ui/assets/{memory-page-B3TXiZ88.js.map → memory-page-krtr9o5d.js.map} +1 -1
- package/dist/ui/assets/{pipelines-page-Cae5pcGt.js → pipelines-page-DNpoe4kw.js} +2 -2
- package/dist/ui/assets/{pipelines-page-Cae5pcGt.js.map → pipelines-page-DNpoe4kw.js.map} +1 -1
- package/dist/ui/assets/{sessions-page-DvFpN7Rn.js → sessions-page-Cg-xwPD0.js} +2 -2
- package/dist/ui/assets/{sessions-page-DvFpN7Rn.js.map → sessions-page-Cg-xwPD0.js.map} +1 -1
- package/dist/ui/assets/{status-page-DNc8fCjw.js → status-page-vgm2JUc7.js} +2 -2
- package/dist/ui/assets/{status-page-DNc8fCjw.js.map → status-page-vgm2JUc7.js.map} +1 -1
- package/dist/ui/assets/{tool-runner-5wyqco4y.js → tool-runner-zwr5Bxg2.js} +2 -2
- package/dist/ui/assets/{tool-runner-5wyqco4y.js.map → tool-runner-zwr5Bxg2.js.map} +1 -1
- package/dist/ui/assets/{tools-page-DLc0kRBh.js → tools-page-CmmxKJfO.js} +2 -2
- package/dist/ui/assets/{tools-page-DLc0kRBh.js.map → tools-page-CmmxKJfO.js.map} +1 -1
- package/dist/ui/assets/{trace-browser-DiaDaAtl.js → trace-browser-FXCuGeXt.js} +2 -2
- package/dist/ui/assets/{trace-browser-DiaDaAtl.js.map → trace-browser-FXCuGeXt.js.map} +1 -1
- package/dist/ui/assets/{transcript-item-C8rSd3WK.js → transcript-item-BF9qx3gB.js} +2 -2
- package/dist/ui/assets/{transcript-item-C8rSd3WK.js.map → transcript-item-BF9qx3gB.js.map} +1 -1
- package/dist/ui/index.html +1 -1
- package/package.json +4 -4
- package/dist/ui/assets/index-DMVhlBNM.js +0 -55
- package/dist/ui/assets/index-DMVhlBNM.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"mappings":"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ACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,MACF,IAAK,IACH,MACF,IAAK,IACH,EAAyB,EAAa,UACtC,EAAK,EAAa,UACT,EAAa,gBAAtB,KASI,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,EACC,EAAuB,aAAe,EACxC,GACE,EACA,EACA,EACA,GACO,EAAa,aAAe,QAAnC,GAA6C,CAAC,EAC/C,EAtBH,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,CACD,GAAwC,EAAc,EAAa,CAgBzE,EAAQ,MAAQ,GAAmC,EAAI,EAAa,CACpE,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,EAAQ,MACN,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GACE,EACA,EACA,EACA,EACD,EAGP,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CAIA,IAHA,KAEU,EAAY,aAAe,QAAlC,GAA4C,CAAC,EAC3C,EAAc,EAAY,MAAgB,IAAT,MAAwB,CAC5D,IAAI,EAAe,EACjB,EAAe,EACf,EAAiB,EACjB,EAAuB,EACvB,EAAQ,EAAa,MACvB,OAAQ,EAAa,IAArB,CACE,IAAK,GACL,IAAK,IACL,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GAA0B,EAAG,EAAa,CAC1C,MACF,IAAK,IACH,MACF,IAAK,IACH,IAAI,EAAW,EAAa,UACnB,EAAa,gBAAtB,MAaM,EAAS,aAAe,EAC1B,GACE,EACA,EACA,EACA,EACA,EACD,EAnBD,EAAS,YAAc,EACrB,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EACA,EACD,CASP,GACE,EAAQ,MACR,GACE,EAAa,UACb,EACD,CACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EAAQ,MACR,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GACE,EACA,EACA,EACA,EACA,EACD,CAEL,EAAc,EAAY,SAG9B,S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PA,IACG,GAAkB,EAAM,EAAyB,CAAC,OAAS,KAC9D,EAA2B,GACzB,EACA,EACA,CAAC,EACF,CACS,IAAN,EAAgC,CAClC,GACE,IACA,CAAC,EACD,CACA,EAAK,4BAA8B,EACnC,IACE,EACF,EAAa,EACb,MAAM,EAER,EAAsB,GACtB,GAAsC,EAC7B,IAAT,OACY,KAAT,KACI,GAAsC,EACvC,GAAoC,KAAK,MACvC,GACA,EACD,EAET,EAAa,EAGf,GADA,EAAsB,CAAC,EACb,IAAN,EAAkB,UAG1B,GAAU,IAAN,EAAkB,CACpB,GAAkB,EAAe,EAAE,CACnC,GAAkB,EAAe,EAAO,EAAG,CAAC,EAAE,CAC9C,MAEF,EAAG,CAGD,OAFA,EAAkB,EAClB,EAAsB,EACd,EAAR,CACE,IAAK,GACL,IAAK,GACH,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1C,IAAK,GACH,IAAK,EAAQ,WAAa,EAAO,MACnC,IAAK,GACH,GACE,EACA,EACA,GACA,CAAC,GACF,CACD,MAAM,EACR,IAAK,GACH,GAAsC,KACtC,MACF,IAAK,GACL,IAAK,GACH,MACF,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,CAE5C,IACG,EAAQ,YAAc,IACrB,EAAa,GAA+B,IAAM,IAAK,CACzD,GAAK,GACL,CAOA,GANA,GACE,EACA,EACA,GACA,CAAC,GACF,CACS,GAAa,EAAiB,EAAG,CAAC,EAAE,GAA1C,EAA4C,MAAM,EACtD,GAAsB,EACtB,EAAgB,cAAgB,GAC9B,GAAoB,KAClB,KACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,YACA,GACA,EACD,CACD,EACD,CACD,MAAM,EAER,GACE,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,KACA,GACA,EACD,EAGL,YACO,GACT,GAAsB,EAAc,CAEtC,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAGA,GAFA,EAAK,cAAgB,GACrB,EAAwB,EAAa,aAEnC,EAAwB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B,GAAa,SAAS,CACzB,GAAI,kBACJ,OAAQ,CAAE,MAAK,CAChB,CAAC,CAiBJ,IAAM,GAAe,CACnB,aACA,SACA,sBACA,cACA,qBACA,kBACA,SACA,gBACA,aACA,eACA,mBACA,eACA,cACA,iBACA,WACA,eACA,aACA,oBACA,SACA,WACA,iBACA,kBACA,uBACA,6BACA,oBACA,wBACA,YACA,mBACA,SACA,gBACA,QACA,gBACA,UACA,iBACA,qBACA,YACA,wBACA,gCAnDC,GAAqB,CACpB,GAAI,CAAC,GAAoB,EAAM,GAAiB,CAAE,CAChD,GAAiB,EAAK,CACtB,OAEF,EAAc,EAAK,CACf,IAAS,WACX,GAAO,qBAAqB,EAGhC,CAAC,GAAkB,GAAkB,GAAO,CAyC5C,CACA,oBACA,gBACA,wBACA,qBACA,WACA,kBACA,uBACA,YACA,gBACA,yBACA,wBACA,sBACA,gBACA,uBACA,sBACA,0BACA,aACA,cACA,8BACD,CAED,OACE,SAAC,GAAqB,SAAtB,CAA+B,MAAO,aACpC,SAAC,GAAD,CAAgB,OAAQ,GAAgB,EACV,EC1epC,IAAM,GAAO,SAAS,eAAe,WAAW,CAE5C,KAAS,OACX,iBAAW,GAAK,CAAC,QAAO,SAAC,GAAD,EAAiB,EAAC","names":["useLayoutEffect","usePrevious","isFunction","deepEqual","trimPathRight","Fragment","setRef","getElementRef","Slot","React","clamp","useCallbackRef","count","computePosition","arrow","flip","hide","offset","shift","limitShift","size","getComputedStyle","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","NAME","Arrow","CONTENT_NAME","floatingUIarrow","ARROW_NAME","ArrowPrimitive.Root","PORTAL_NAME","SideCar","PopperPrimitive.Root","Select","Fragment2","SelectTrigger","PopperPrimitive.Anchor","SelectValue","PortalPrimitive","SelectContent","RemoveScroll","PopperPrimitive.Content","SelectItem","PopperPrimitive.Arrow"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,97,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],"sources":["../../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.js","../../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.js","../../../../../node_modules/.pnpm/react-dom@19.2.7_react@19.2.7/node_modules/react-dom/cjs/react-dom.production.js","../../../../../node_modules/.pnpm/react-dom@19.2.7_react@19.2.7/node_modules/react-dom/index.js","../../../../../node_modules/.pnpm/react-dom@19.2.7_react@19.2.7/node_modules/react-dom/cjs/react-dom-client.production.js","../../../../../node_modules/.pnpm/react-dom@19.2.7_react@19.2.7/node_modules/react-dom/client.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/utils.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/utils.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/invariant.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/new-process-route-tree.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/path.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/not-found.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/qss.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/searchParams.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/root.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/redirect.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/load-matches.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/rewrite.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/stores.js","../../../../../node_modules/.pnpm/@tanstack+history@1.162.0/node_modules/@tanstack/history/dist/esm/index.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/router.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/link.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.14/node_modules/@tanstack/router-core/dist/esm/route.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/CatchBoundary.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/ClientOnly.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/routerContext.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/useRouter.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/matchContext.js","../../../../../node_modules/.pnpm/@tanstack+store@0.9.3/node_modules/@tanstack/store/dist/esm/alien.js","../../../../../node_modules/.pnpm/@tanstack+store@0.9.3/node_modules/@tanstack/store/dist/esm/atom.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.7/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.7/node_modules/use-sync-external-store/shim/index.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.7/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.7/node_modules/use-sync-external-store/shim/with-selector.js","../../../../../node_modules/.pnpm/@tanstack+react-store@0.9.3_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-store/dist/esm/useStore.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/useMatch.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/useLoaderData.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/useLoaderDeps.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/useParams.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/useSearch.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/useNavigate.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/useRouteContext.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/link.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/route.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/not-found.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/SafeFragment.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/renderRouteNotFound.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/Match.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/Transitioner.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/Matches.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/routerStores.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/router.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-router/dist/esm/RouterProvider.js","../../../src/ui/app/app-helpers.ts","../../../src/ui/app/app-theme.ts","../../../src/ui/app/modules/agents/use-agent-models.ts","../../../../core/dist/chunk-5LFGEMIW.js","../../../../core/dist/chunk-LKLKEECY.js","../../../../react/dist/index.js","../../../src/ui/app/app-errors.ts","../../../src/ui/app/modules/shared/transcript.ts","../../../src/ui/app/modules/playground/use-playground-run.ts","../../../src/ui/app/modules/playground/use-playground-transcript.ts","../../../src/ui/app/modules/sessions/use-studio-sessions.ts","../../../src/ui/app/modules/shared/navigation.ts","../../../src/ui/app/modules/shared/path.ts","../../../src/ui/app/modules/tracing/use-traces.ts","../../../src/ui/app/studio-console-context.tsx","../../../src/ui/app/app-pages.tsx","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Activity01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/ArchiveIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowDown01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/ArrowUp02Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/AttachmentIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/BookOpenTextIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Cancel01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/ChatIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/CheckIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/DatabaseLightningIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/DatabaseIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/ExternalLinkIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/GaugeIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/ListViewIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Moon02Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Plug01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Robot01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/SearchList01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Shield01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Sun02Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/ToolsIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/WorkflowSquare01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Wrench01Icon.js","../../../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.3_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-slot@1.3.0_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../src/ui/app/components/ui/button.tsx","../../../../../node_modules/.pnpm/@hugeicons+react@1.1.9_react@19.2.7/node_modules/@hugeicons/react/dist/esm/HugeiconsIcon.js","../../../src/ui/app/components/ui/icon.tsx","../../../src/ui/app/modules/knowledge/knowledge-model.ts","../../../src/ui/app/modules/shell/nav-button.tsx","../../../src/ui/app/modules/shell/studio-shell.tsx","../../../src/ui/app/modules/shell/studio-console-layout.tsx","../../../src/ui/app/routes/route-helpers.ts","../../../src/ui/app/routes/agents-route.tsx","../../../src/ui/app/modules/evals/evals-container.tsx","../../../src/ui/app/routes/evals-route.tsx","../../../src/ui/app/modules/inspectors/inspectors-containers.tsx","../../../src/ui/app/routes/knowledge-route.tsx","../../../src/ui/app/routes/mcps-route.tsx","../../../src/ui/app/routes/memory-route.tsx","../../../src/ui/app/modules/pipelines/use-pipelines.ts","../../../src/ui/app/modules/pipelines/pipelines-container.tsx","../../../src/ui/app/routes/pipelines-route.tsx","../../../../../node_modules/.pnpm/@radix-ui+number@1.1.2/node_modules/@radix-ui/number/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+primitive@1.1.4/node_modules/@radix-ui/primitive/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-context@1.1.4_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-context/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-collection@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_dd921b3a34f0b66b098848a1d3ec79f7/node_modules/@radix-ui/react-collection/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-direction@1.1.2_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-direction/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.7_@types+react-dom@19.2.3_@types+react@19.2.14__@types+re_ff49901695e7928de0a4ab366b186000/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.2_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.2_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-use-effect-event@0.0.3_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-use-effect-event/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.14_@types+react-dom@19.2.3_@types+react@19.2.14___0e452d0ac784162c1b0f72b37a19c018/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.4_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@types_9825055166137beb3943345ed55133cd/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-id@1.1.2_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-id/dist/index.mjs","../../../../../node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../../../node_modules/.pnpm/@floating-ui+core@1.7.5/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../../../node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../../../node_modules/.pnpm/@floating-ui+dom@1.7.6/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../../../node_modules/.pnpm/@floating-ui+react-dom@2.1.8_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-arrow@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_7803af19f34719b54509fb70f47816d8/node_modules/@radix-ui/react-arrow/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-use-size@1.1.2_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-use-size/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-popper@1.3.2_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_cc44bd8ce3fc0917dacf5f40c8609973/node_modules/@radix-ui/react-popper/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-portal@1.1.13_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_c688c328a02c4c513d741f8f9216df4d/node_modules/@radix-ui/react-portal/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_384cd3cf3d75da39b642b140904ffd25/node_modules/@radix-ui/react-presence/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.3_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-use-previous@1.1.2_@types+react@19.2.14_react@19.2.7/node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../../../../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.7_@types+react-dom@19.2.3_@types+react@19.2.14__@ty_da87f1d26d0072742b52430cff6d741a/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../../../../../node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.js","../../../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../../../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.14_react@19.2.7/node_modules/use-callback-ref/dist/es2015/assignRef.js","../../../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.14_react@19.2.7/node_modules/use-callback-ref/dist/es2015/useRef.js","../../../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.14_react@19.2.7/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../../../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.2.14_react@19.2.7/node_modules/use-sidecar/dist/es2015/medium.js","../../../../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.2.14_react@19.2.7/node_modules/use-sidecar/dist/es2015/exports.js","../../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/medium.js","../../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/UI.js","../../../../../node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","../../../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.14_react@19.2.7/node_modules/react-style-singleton/dist/es2015/singleton.js","../../../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.14_react@19.2.7/node_modules/react-style-singleton/dist/es2015/hook.js","../../../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.14_react@19.2.7/node_modules/react-style-singleton/dist/es2015/component.js","../../../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../../../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll-bar/dist/es2015/component.js","../../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.14_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/Combination.js","../../../../../node_modules/.pnpm/@radix-ui+react-select@2.3.2_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_230bec6356d6abaf33300c47918585c8/node_modules/@radix-ui/react-select/dist/index.mjs","../../../src/ui/app/components/ui/select.tsx","../../../src/ui/app/components/ui/studio.tsx","../../../src/ui/app/components/ui/textarea.tsx","../../../src/ui/app/modules/playground/response-metrics.ts","../../../src/ui/app/modules/playground/playground-page.tsx","../../../src/ui/app/routes/playground-route.tsx","../../../src/ui/app/routes/sessions-route.tsx","../../../src/ui/app/routes/status-route.tsx","../../../src/ui/app/routes/tools-route.tsx","../../../src/ui/app/routes/tracing-route.tsx","../../../src/ui/app/studio-router.tsx","../../../src/ui/app/app.tsx","../../../src/ui/app/main.tsx"],"sourcesContent":["/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.2.7\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$1) {\n control = x$1;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = workInProgress),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n return lanes & 261888;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n track(element);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n track(element);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$286;\n if (canUseDOM) {\n var isSupported$jscomp$inline_427 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_427) {\n var element$jscomp$inline_428 = document.createElement(\"div\");\n element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_427 =\n \"function\" === typeof element$jscomp$inline_428.oninput;\n }\n JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n } else JSCompiler_inline_result$jscomp$286 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$286 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n globalMostRecentTransitionTime = now();\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n (\"forwards\" === node.memoizedProps.revealOrder ||\n \"backwards\" === node.memoizedProps.revealOrder ||\n \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n \"together\" === node.memoizedProps.revealOrder)\n ) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$60 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n gesture: update.gesture,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$60 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$66) {\n onActionError(actionQueue, node, error$66);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (\n 0 === (renderLanes & 42) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$69 = enqueueUpdate(provider, fiber, lane);\n null !== root$69 &&\n (scheduleUpdateOnFiber(root$69, provider, lane),\n entangleTransitions(root$69, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\n }\n return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$74) {\n setTimeout(function () {\n throw e$74;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 31:\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 4096);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n var nextPrimaryChildren = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextPrimaryChildren },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.sibling = nextProps),\n (workInProgress.child = nextPrimaryChildren),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n }\n var prevState = current.memoizedState;\n if (\n null !== prevState &&\n ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n showFallback\n )),\n (nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = bailoutOffscreenComponent(null, nextProps)));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextPrimaryChildren))\n ) {\n JSCompiler_temp =\n nextPrimaryChildren.nextSibling &&\n nextPrimaryChildren.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n 0 !== nextProps && nextProps !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(nextPrimaryChildren) ||\n renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n isSuspenseInstancePending(nextPrimaryChildren)\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextPrimaryChildren.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (prevState = current.child),\n (digest = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n null !== digest\n ? (nextPrimaryChildren = createWorkInProgress(\n digest,\n nextPrimaryChildren\n ))\n : ((nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2)),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (nextPrimaryChildren = current.child.memoizedState),\n null === nextPrimaryChildren\n ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n : ((showFallback = nextPrimaryChildren.cachePool),\n null !== showFallback\n ? ((prevState = CacheContext._currentValue),\n (showFallback =\n showFallback.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : showFallback))\n : (showFallback = getSuspendedCache()),\n (nextPrimaryChildren = {\n baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n cachePool: showFallback\n })),\n (nextProps.memoizedState = nextPrimaryChildren),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode,\n treeForkCount\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n treeForkCount: treeForkCount\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode),\n (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current,\n shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n push(suspenseStackCursor, suspenseContext);\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode,\n nextProps\n );\n break;\n case \"backwards\":\n case \"unstable_legacy-backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$102 = workInProgress.memoizedState;\n if (null !== state$102) {\n if (null !== state$102.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state$102 = 0 !== (renderLanes & workInProgress.childLanes);\n state$102 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state$102)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state$102) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (props = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (props[internalInstanceKey] = workInProgress),\n (props[internalPropsKey] = current),\n setInitialProperties(props, renderLanes, current),\n markNodeAsHoistable(props),\n (workInProgress.stateNode = props))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (props = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, props.value),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n if (type) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$106 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$106\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$106.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags & 65011712),\n (subtreeFlags |= child$107.flags & 65011712),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n else\n for (child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags),\n (subtreeFlags |= child$107.flags),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \"<script>\\x3c/script>\";\n nextResource = nextResource.removeChild(\n nextResource.firstChild\n );\n break;\n case \"select\":\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(\"select\", {\n is: newProps.is\n })\n : ownerDocument.createElement(\"select\");\n newProps.multiple\n ? (nextResource.multiple = !0)\n : newProps.size && (nextResource.size = newProps.size);\n break;\n default:\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(type, { is: newProps.is })\n : ownerDocument.createElement(type);\n }\n }\n nextResource[internalInstanceKey] = workInProgress;\n nextResource[internalPropsKey] = newProps;\n a: for (\n ownerDocument = workInProgress.child;\n null !== ownerDocument;\n\n ) {\n if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n nextResource.appendChild(ownerDocument.stateNode);\n else if (\n 4 !== ownerDocument.tag &&\n 27 !== ownerDocument.tag &&\n null !== ownerDocument.child\n ) {\n ownerDocument.child.return = ownerDocument;\n ownerDocument = ownerDocument.child;\n continue;\n }\n if (ownerDocument === workInProgress) break a;\n for (; null === ownerDocument.sibling; ) {\n if (\n null === ownerDocument.return ||\n ownerDocument.return === workInProgress\n )\n break a;\n ownerDocument = ownerDocument.return;\n }\n ownerDocument.sibling.return = ownerDocument.return;\n ownerDocument = ownerDocument.sibling;\n }\n workInProgress.stateNode = nextResource;\n a: switch (\n (setInitialProperties(nextResource, type, newProps), type)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n newProps = !!newProps.autoFocus;\n break a;\n case \"img\":\n newProps = !0;\n break a;\n default:\n newProps = !1;\n }\n newProps && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n workInProgress.type,\n null === current ? null : current.memoizedProps,\n workInProgress.pendingProps,\n renderLanes\n );\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress, !0);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 31:\n renderLanes = workInProgress.memoizedState;\n if (null === current || null !== current.memoizedState) {\n newProps = popHydrationState(workInProgress);\n if (null !== renderLanes) {\n if (null === current) {\n if (!newProps) throw Error(formatProdErrorMessage(318));\n current = workInProgress.memoizedState;\n current = null !== current ? current.dehydrated : null;\n if (!current) throw Error(formatProdErrorMessage(557));\n current[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n current = !1;\n } else\n (renderLanes = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = renderLanes),\n (current = !0);\n if (!current) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n if (0 !== (workInProgress.flags & 128))\n throw Error(formatProdErrorMessage(558));\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n renderLanes &&\n ((newProps = workInProgress.child),\n (type = null),\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool),\n (nextResource = null),\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (nextResource = newProps.memoizedState.cachePool.pool),\n nextResource !== type && (newProps.flags |= 2048));\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n newProps = workInProgress.memoizedState;\n if (null === newProps) return bubbleProperties(workInProgress), null;\n type = 0 !== (workInProgress.flags & 128);\n nextResource = newProps.rendering;\n if (null === nextResource)\n if (type) cutOffTailIfNeeded(newProps, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n nextResource = findFirstSuspended(current);\n if (null !== nextResource) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(newProps, !1);\n current = nextResource.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n isHydrating &&\n pushTreeFork(workInProgress, newProps.treeForkCount);\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== newProps.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!type)\n if (\n ((current = findFirstSuspended(nextResource)), null !== current)\n ) {\n if (\n ((workInProgress.flags |= 128),\n (type = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(newProps, !0),\n null === newProps.tail &&\n \"hidden\" === newProps.tailMode &&\n !nextResource.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - newProps.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n newProps.isBackwards\n ? ((nextResource.sibling = workInProgress.child),\n (workInProgress.child = nextResource))\n : ((current = newProps.last),\n null !== current\n ? (current.sibling = nextResource)\n : (workInProgress.child = nextResource),\n (newProps.last = nextResource));\n }\n if (null !== newProps.tail)\n return (\n (current = newProps.tail),\n (newProps.rendering = current),\n (newProps.tail = current.sibling),\n (newProps.renderingStartTime = now()),\n (current.sibling = null),\n (renderLanes = suspenseStackCursor.current),\n push(\n suspenseStackCursor,\n type ? (renderLanes & 1) | 2 : renderLanes & 1\n ),\n isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n current\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return null;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 31:\n if (null !== workInProgress.memoizedState) {\n popSuspenseHandler(workInProgress);\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 31:\n null !== interruptedWork.memoizedState &&\n popSuspenseHandler(interruptedWork);\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$140) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$140);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(node, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(node),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (\n 4 !== tag &&\n (27 === tag &&\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (\n 4 !== tag &&\n (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n if (\n 0 !== (root & 4) &&\n ((root = firstChild.updateQueue),\n (root = null !== root ? root.events : null),\n null !== root)\n )\n for (\n JSCompiler_temp = 0;\n JSCompiler_temp < root.length;\n JSCompiler_temp++\n )\n (anchorOffset = root[JSCompiler_temp]),\n (anchorOffset.ref.impl = anchorOffset.nextImpl);\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$139) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$139\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 31:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n prevProps = offscreenSubtreeIsHidden;\n var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevProps;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n break;\n case 30:\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearHydrationBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n ) {\n finishedRoot = finishedRoot.dehydrated;\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 31:\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n wakeable.then(retry, retry);\n }\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13886)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 31:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n hoistableRoot = null !== finishedWork.memoizedState;\n var wasHidden = null !== current && null !== current.memoizedState,\n prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n if (flags & 8192)\n a: for (\n root = finishedWork.stateNode,\n root._visibility = hoistableRoot\n ? root._visibility & -2\n : root._visibility | 1,\n hoistableRoot &&\n (null === current ||\n wasHidden ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n current = null,\n root = finishedWork;\n ;\n\n ) {\n if (5 === root.tag || 26 === root.tag) {\n if (null === current) {\n wasHidden = current = root;\n try {\n if (((currentResource = wasHidden.stateNode), hoistableRoot))\n (maybeNodes = currentResource.style),\n \"function\" === typeof maybeNodes.setProperty\n ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n : (maybeNodes.display = \"none\");\n else {\n i = wasHidden.stateNode;\n var styleProp = wasHidden.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n i.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n wasHidden.stateNode.nodeValue = hoistableRoot\n ? \"\"\n : wasHidden.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (18 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n var instance = wasHidden.stateNode;\n hoistableRoot\n ? hideOrUnhideDehydratedBoundary(instance, !0)\n : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n case 5:\n var parent$141 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n var before$142 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n break;\n case 3:\n case 4:\n var parent$143 = hostParentFiber.stateNode.containerInfo,\n before$144 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$144,\n parent$143\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 27:\n releaseSingletonInstance(finishedWork.stateNode);\n case 26:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 31:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 31:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256) || !1\n ));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects &&\n (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n parentFiber,\n committedLanes,\n suspendedState\n) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(\n parentFiber,\n committedLanes,\n suspendedState\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n fiber,\n committedLanes,\n suspendedState\n) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n suspendedState,\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n },\n cacheSignal: function () {\n return readContext(CacheContext).controller.signal;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n globalMostRecentTransitionTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n : null !== ReactSharedInternals.T\n ? requestTransitionLane()\n : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n if (0 === workInProgressDeferredLane)\n if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n var lane = nextTransitionDeferredLane;\n nextTransitionDeferredLane <<= 1;\n 0 === (nextTransitionDeferredLane & 3932160) &&\n (nextTransitionDeferredLane = 262144);\n workInProgressDeferredLane = lane;\n } else workInProgressDeferredLane = 536870912;\n lane = suspenseHandlerStackCursor.current;\n null !== lane && (lane.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 127) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n pendingEffectsLanes = lanes;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n \"Throttled\",\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n null,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n suspendedCommitReason = finishedWork.subtreeFlags;\n if (\n suspendedCommitReason & 8192 ||\n 16785408 === (suspendedCommitReason & 16785408)\n ) {\n suspendedCommitReason = {\n stylesheets: null,\n count: 0,\n imgCount: 0,\n imgBytes: 0,\n suspenseyImages: [],\n waitingForImages: !0,\n waitingForViewTransition: !1,\n unsuspend: noop$1\n };\n accumulateSuspenseyCommitOnFiber(\n finishedWork,\n lanes,\n suspendedCommitReason\n );\n var timeoutOffset =\n (lanes & 62914560) === lanes\n ? globalMostRecentFallbackTime - now()\n : (lanes & 4194048) === lanes\n ? globalMostRecentTransitionTime - now()\n : 0;\n timeoutOffset = waitForCommitToBeReady(\n suspendedCommitReason,\n timeoutOffset\n );\n if (null !== timeoutOffset) {\n pendingEffectsLanes = lanes;\n root.cancelPendingCommit = timeoutOffset(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n suspendedCommitReason,\n null,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$6 = 31 - clz32(lanes),\n lane = 1 << index$6;\n didAttemptEntireTree[index$6] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState$1 = null),\n (thenableIndexCounter$1 = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n pendingEffectsLanes = 0;\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n lanes |= root[index$4];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction shouldRemainOnPreviousScreen() {\n var handler = suspenseHandlerStackCursor.current;\n return null === handler\n ? !0\n : (workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null === shellBoundary\n ? !0\n : !1\n : (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n ? handler === shellBoundary\n : !1;\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$165) {\n handleThrow(root, thrownValue$165);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (\n resource\n ? preloadResource(resource)\n : hostFiber.stateNode.complete\n ) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$167) {\n handleThrow(root, thrownValue$167);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState$1 = null;\n thenableIndexCounter$1 = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n }\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root);\n var priorSelectionInformation = selectionInformation,\n curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = priorSelectionInformation.focusedElem,\n priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n var remainingLanes = root.pendingLanes;\n 0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n remainingLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = remainingLanes);\n }\n }\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n remainingLanes = root.pendingLanes;\n 0 !== (lanes & 261930) && 0 !== (remainingLanes & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 31:\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$170 = firstScheduledRoot; null !== root$170; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$170.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$170.suspendedLanes,\n pingedLanes = root$170.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$170,\n root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$170.cancelPendingCommit ||\n -1 !== root$170.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n root$170 = root$170.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane);\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n 0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$5 = 31 - clz32(lanes),\n lane = 1 << index$5,\n expirationTime = expirationTimes[index$5];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n if (0 === currentEventTransitionLane) {\n var actionScopeLane = currentEntangledLane;\n 0 === actionScopeLane &&\n ((actionScopeLane = nextTransitionUpdateLane),\n (nextTransitionUpdateLane <<= 1),\n 0 === (nextTransitionUpdateLane & 261888) &&\n (nextTransitionUpdateLane = 256));\n currentEventTransitionLane = actionScopeLane;\n }\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1577 = 0;\n i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n i$jscomp$inline_1577++\n) {\n var eventName$jscomp$inline_1578 =\n simpleEventPluginEvents[i$jscomp$inline_1577],\n domEventName$jscomp$inline_1579 =\n eventName$jscomp$inline_1578.toLowerCase(),\n capitalizedEvent$jscomp$inline_1580 =\n eventName$jscomp$inline_1578[0].toUpperCase() +\n eventName$jscomp$inline_1578.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1579,\n \"on\" + capitalizedEvent$jscomp$inline_1580\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = getParent;\n reactEventName = SyntheticEventCtor;\n instance = reactEventType;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = inCapturePhase(_instance)\n )\n lastHostComponent++;\n _instance = 0;\n for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n _instance++;\n for (; 0 < lastHostComponent - _instance; )\n (reactEventName = inCapturePhase(reactEventName)),\n lastHostComponent--;\n for (; 0 < _instance - lastHostComponent; )\n (instance = inCapturePhase(instance)), _instance--;\n for (; lastHostComponent--; ) {\n if (\n reactEventName === instance ||\n (null !== instance && reactEventName === instance.alternate)\n ) {\n inCapturePhase = reactEventName;\n break b;\n }\n reactEventName = inCapturePhase(reactEventName);\n instance = inCapturePhase(instance);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n \"string\" === typeof value\n ? \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n \"body\" !== tag &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n \"string\" === typeof value\n ? setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n }\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$184 = props[hasSrc];\n if (null != propValue$184)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$184;\n break;\n case \"type\":\n propValue = propValue$184;\n break;\n case \"checked\":\n checked = propValue$184;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$184;\n break;\n case \"value\":\n propKey = propValue$184;\n break;\n case \"defaultValue\":\n defaultValue = propValue$184;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$184)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$184, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$184 in props)\n props.hasOwnProperty(propValue$184) &&\n ((hasSrc = props[propValue$184]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$184,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$201 in nextProps) {\n var propKey = nextProps[propKey$201];\n lastProp = lastProps[propKey$201];\n if (\n nextProps.hasOwnProperty(propKey$201) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$201) {\n case \"type\":\n type = propKey;\n break;\n case \"name\":\n name = propKey;\n break;\n case \"checked\":\n checked = propKey;\n break;\n case \"defaultChecked\":\n defaultChecked = propKey;\n break;\n case \"value\":\n value = propKey;\n break;\n case \"defaultValue\":\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$201,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$201 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n propKey$201 = type;\n break;\n case \"defaultValue\":\n defaultValue = type;\n break;\n case \"multiple\":\n value = type;\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$201\n ? updateOptions(domElement, !!lastProps, propKey$201, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$201 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n propKey$201 = name;\n break;\n case \"defaultValue\":\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$201, propKey);\n return;\n case \"option\":\n for (var propKey$217 in lastProps)\n if (\n ((propKey$201 = lastProps[propKey$217]),\n lastProps.hasOwnProperty(propKey$217) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$217))\n )\n switch (propKey$217) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$217,\n null,\n nextProps,\n propKey$201\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$201 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$201 &&\n \"function\" !== typeof propKey$201 &&\n \"symbol\" !== typeof propKey$201;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$222 in lastProps)\n (propKey$201 = lastProps[propKey$222]),\n lastProps.hasOwnProperty(propKey$222) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$222) &&\n setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n for (checked in nextProps)\n if (\n ((propKey$201 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$201)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$227 in lastProps)\n (propKey$201 = lastProps[propKey$227]),\n lastProps.hasOwnProperty(propKey$227) &&\n void 0 !== propKey$201 &&\n !nextProps.hasOwnProperty(propKey$227) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$227,\n void 0,\n nextProps,\n propKey$201\n );\n for (defaultChecked in nextProps)\n (propKey$201 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$201 === propKey ||\n (void 0 === propKey$201 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$201,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$232 in lastProps)\n (propKey$201 = lastProps[propKey$232]),\n lastProps.hasOwnProperty(propKey$232) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$232) &&\n setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n for (lastProp in nextProps)\n (propKey$201 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$201 === propKey ||\n (null == propKey$201 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n switch (initiatorType) {\n case \"css\":\n case \"script\":\n case \"font\":\n case \"img\":\n case \"image\":\n case \"input\":\n case \"link\":\n return !0;\n default:\n return !1;\n }\n}\nfunction estimateBandwidth() {\n if (\"function\" === typeof performance.getEntriesByType) {\n for (\n var count = 0,\n bits = 0,\n resourceEntries = performance.getEntriesByType(\"resource\"),\n i = 0;\n i < resourceEntries.length;\n i++\n ) {\n var entry = resourceEntries[i],\n transferSize = entry.transferSize,\n initiatorType = entry.initiatorType,\n duration = entry.duration;\n if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n initiatorType = 0;\n duration = entry.responseEnd;\n for (i += 1; i < resourceEntries.length; i++) {\n var overlapEntry = resourceEntries[i],\n overlapStartTime = overlapEntry.startTime;\n if (overlapStartTime > duration) break;\n var overlapTransferSize = overlapEntry.transferSize,\n overlapInitiatorType = overlapEntry.initiatorType;\n overlapTransferSize &&\n isLikelyStaticResource(overlapInitiatorType) &&\n ((overlapEntry = overlapEntry.responseEnd),\n (initiatorType +=\n overlapTransferSize *\n (overlapEntry < duration\n ? 1\n : (duration - overlapStartTime) /\n (overlapEntry - overlapStartTime))));\n }\n --i;\n bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n count++;\n if (10 < count) break;\n }\n }\n if (0 < count) return bits / count / 1e6;\n }\n return navigator.connection &&\n ((count = navigator.connection.downlink), \"number\" === typeof count)\n ? count\n : 5;\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n var node = hydrationInstance,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(hydrationInstance);\n return;\n }\n depth--;\n } else if (\n \"$\" === node ||\n \"$?\" === node ||\n \"$~\" === node ||\n \"$!\" === node ||\n \"&\" === node\n )\n depth++;\n else if (\"html\" === node)\n releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n else if (\"head\" === node) {\n node = parentInstance.ownerDocument.head;\n releaseSingletonInstance(node);\n for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n nodeName = node$jscomp$0.nodeName;\n node$jscomp$0[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n node.removeChild(node$jscomp$0);\n node$jscomp$0 = nextNode$jscomp$0;\n }\n } else\n \"body\" === node &&\n releaseSingletonInstance(parentInstance.ownerDocument.body);\n node = nextNode;\n } while (node);\n retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n var node = suspenseInstance;\n suspenseInstance = 0;\n do {\n var nextNode = node.nextSibling;\n 1 === node.nodeType\n ? isHidden\n ? ((node._stashedDisplay = node.style.display),\n (node.style.display = \"none\"))\n : ((node.style.display = node._stashedDisplay || \"\"),\n \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n : 3 === node.nodeType &&\n (isHidden\n ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n : (node.nodeValue = node._stashedText || \"\"));\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node))\n if (0 === suspenseInstance) break;\n else suspenseInstance--;\n else\n (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n suspenseInstance++;\n node = nextNode;\n } while (node);\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n for (; 8 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$~\" === instance.data) instance._reactRetry = callback;\n else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"$~\" === nodeType ||\n \"&\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n hydrationInstance = hydrationInstance.nextSibling;\n for (var depth = 0; hydrationInstance; ) {\n if (8 === hydrationInstance.nodeType) {\n var data = hydrationInstance.data;\n if (\"/$\" === data || \"/&\" === data) {\n if (0 === depth)\n return getNextHydratable(hydrationInstance.nextSibling);\n depth--;\n } else\n (\"$\" !== data &&\n \"$!\" !== data &&\n \"$?\" !== data &&\n \"$~\" !== data &&\n \"&\" !== data) ||\n depth++;\n }\n hydrationInstance = hydrationInstance.nextSibling;\n }\n return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\n \"$\" === data ||\n \"$!\" === data ||\n \"$?\" === data ||\n \"$~\" === data ||\n \"&\" === data\n ) {\n if (0 === depth) return targetInstance;\n depth--;\n } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : 9 === container.nodeType\n ? container\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$243 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$244 = styles$243.get(type);\n resource$244 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$244 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$243.set(type, resource$244),\n (styles$243 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$243._p &&\n ((resource$244.instance = styles$243),\n (resource$244.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$243 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$244.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$244;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$249 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$249)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$249),\n markNodeAsHoistable(instance$249),\n instance$249\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$249 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$249);\n var linkInstance = instance$249;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$249, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$249, props.precedence, hoistableRoot);\n return (resource.instance = instance$249);\n case \"script\":\n instance$249 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$249)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$249)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count || 0 < state.imgCount\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4 + timeoutOffset);\n 0 < state.imgBytes &&\n 0 === estimatedBytesWithinLimit &&\n (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n var imgTimer = setTimeout(\n function () {\n state.waitingForImages = !1;\n if (\n 0 === state.count &&\n (state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets),\n state.unsuspend)\n ) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n },\n (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n timeoutOffset\n );\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n clearTimeout(imgTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(fiber, lane);\n null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n markRetryLaneIfNotHydrated(fiber, lane);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 31:\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (31 === tag) {\n targetNode = getActivityInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (31 === targetInst) {\n if (\n ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n function handleNavigate(event) {\n event.canIntercept &&\n \"react-transition\" === event.info &&\n event.intercept({\n handler: function () {\n return new Promise(function (resolve) {\n return (pendingResolve = resolve);\n });\n },\n focusReset: \"manual\",\n scroll: \"manual\"\n });\n }\n function handleNavigateComplete() {\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n isCancelled || setTimeout(startFakeNavigation, 20);\n }\n function startFakeNavigation() {\n if (!isCancelled && !navigation.transition) {\n var currentEntry = navigation.currentEntry;\n currentEntry &&\n null != currentEntry.url &&\n navigation.navigate(currentEntry.url, {\n state: currentEntry.getState(),\n info: \"react-transition\",\n history: \"replace\"\n });\n }\n }\n if (\"object\" === typeof navigation) {\n var isCancelled = !1,\n pendingResolve = null;\n navigation.addEventListener(\"navigate\", handleNavigate);\n navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n setTimeout(startFakeNavigation, 100);\n return function () {\n isCancelled = !0;\n navigation.removeEventListener(\"navigate\", handleNavigate);\n navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n };\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1840 = React.version;\nif (\n \"19.2.7\" !==\n isomorphicReactPackageVersion$jscomp$inline_1840\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1840,\n \"19.2.7\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2347 = {\n bundleType: 0,\n version: \"19.2.7\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.2.7\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2348.isDisabled &&\n hook$jscomp$inline_2348.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2348.inject(\n internals$jscomp$inline_2347\n )),\n (injectedHook = hook$jscomp$inline_2348);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n null,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.2.7\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n","\"use client\";\nimport * as React$1 from \"react\";\n/**\n* React.use if available (React 19+), undefined otherwise.\n* Use dynamic lookup to avoid Webpack compilation errors with React 18.\n*/\nvar reactUse = React$1[\"use\"];\nvar useLayoutEffect = typeof window !== \"undefined\" ? React$1.useLayoutEffect : React$1.useEffect;\n/**\n* Taken from https://www.developerway.com/posts/implementing-advanced-use-previous-hook#part3\n*/\nfunction usePrevious(value) {\n\tconst ref = React$1.useRef({\n\t\tvalue,\n\t\tprev: null\n\t});\n\tconst current = ref.current.value;\n\tif (value !== current) ref.current = {\n\t\tvalue,\n\t\tprev: current\n\t};\n\treturn ref.current.prev;\n}\n/**\n* React hook to wrap `IntersectionObserver`.\n*\n* This hook will create an `IntersectionObserver` and observe the ref passed to it.\n*\n* When the intersection changes, the callback will be called with the `IntersectionObserverEntry`.\n*\n* @param ref - The ref to observe\n* @param intersectionObserverOptions - The options to pass to the IntersectionObserver\n* @param options - The options to pass to the hook\n* @param callback - The callback to call when the intersection changes\n* @returns The IntersectionObserver instance\n* @example\n* ```tsx\n* const MyComponent = () => {\n* const ref = React.useRef<HTMLDivElement>(null)\n* useIntersectionObserver(\n* ref,\n* (entry) => { doSomething(entry) },\n* { rootMargin: '10px' },\n* { disabled: false }\n* )\n* return <div ref={ref} />\n* ```\n*/\nfunction useIntersectionObserver(ref, callback, intersectionObserverOptions = {}, options = {}) {\n\tReact$1.useEffect(() => {\n\t\tif (!ref.current || options.disabled || typeof IntersectionObserver !== \"function\") return;\n\t\tconst observer = new IntersectionObserver(([entry]) => {\n\t\t\tcallback(entry);\n\t\t}, intersectionObserverOptions);\n\t\tobserver.observe(ref.current);\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [\n\t\tcallback,\n\t\tintersectionObserverOptions,\n\t\toptions.disabled,\n\t\tref\n\t]);\n}\n/**\n* React hook to take a `React.ForwardedRef` and returns a `ref` that can be used on a DOM element.\n*\n* @param ref - The forwarded ref\n* @returns The inner ref returned by `useRef`\n* @example\n* ```tsx\n* const MyComponent = React.forwardRef((props, ref) => {\n* const innerRef = useForwardedRef(ref)\n* return <div ref={innerRef} />\n* })\n* ```\n*/\nfunction useForwardedRef(ref) {\n\tconst innerRef = React$1.useRef(null);\n\tReact$1.useImperativeHandle(ref, () => innerRef.current, []);\n\treturn innerRef;\n}\n//#endregion\nexport { reactUse, useForwardedRef, useIntersectionObserver, useLayoutEffect, usePrevious };\n\n//# sourceMappingURL=utils.js.map","import { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/utils.ts\n/**\n* Return the last element of an array.\n* Intended for non-empty arrays used within router internals.\n*/\nfunction last(arr) {\n\treturn arr[arr.length - 1];\n}\nfunction isFunction(d) {\n\treturn typeof d === \"function\";\n}\n/**\n* Apply a value-or-updater to a previous value.\n* Accepts either a literal value or a function of the previous value.\n*/\nfunction functionalUpdate(updater, previous) {\n\tif (isFunction(updater)) return updater(previous);\n\treturn updater;\n}\nconst hasOwn = Object.prototype.hasOwnProperty;\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nfunction hasKeys(obj) {\n\tfor (const key in obj) if (hasOwn.call(obj, key)) return true;\n\treturn false;\n}\nconst createNull = () => Object.create(null);\nconst nullReplaceEqualDeep = (prev, next) => replaceEqualDeep(prev, next, createNull);\n/**\n* This function returns `prev` if `_next` is deeply equal.\n* If not, it will replace any deeply equal children of `b` with those of `a`.\n* This can be used for structural sharing between immutable JSON values for example.\n* Do not use this with signals\n*/\nfunction replaceEqualDeep(prev, _next, _makeObj = () => ({}), _depth = 0) {\n\tif (isServer) return _next;\n\tif (prev === _next) return prev;\n\tif (_depth > 500) return _next;\n\tconst next = _next;\n\tconst array = isPlainArray(prev) && isPlainArray(next);\n\tif (!array && !(isPlainObject(prev) && isPlainObject(next))) return next;\n\tconst prevItems = array ? prev : getEnumerableOwnKeys(prev);\n\tif (!prevItems) return next;\n\tconst nextItems = array ? next : getEnumerableOwnKeys(next);\n\tif (!nextItems) return next;\n\tconst prevSize = prevItems.length;\n\tconst nextSize = nextItems.length;\n\tconst copy = array ? new Array(nextSize) : _makeObj();\n\tlet equalItems = 0;\n\tfor (let i = 0; i < nextSize; i++) {\n\t\tconst key = array ? i : nextItems[i];\n\t\tconst p = prev[key];\n\t\tconst n = next[key];\n\t\tif (p === n) {\n\t\t\tcopy[key] = p;\n\t\t\tif (array ? i < prevSize : hasOwn.call(prev, key)) equalItems++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (p === null || n === null || typeof p !== \"object\" || typeof n !== \"object\") {\n\t\t\tcopy[key] = n;\n\t\t\tcontinue;\n\t\t}\n\t\tconst v = replaceEqualDeep(p, n, _makeObj, _depth + 1);\n\t\tcopy[key] = v;\n\t\tif (v === p) equalItems++;\n\t}\n\treturn prevSize === nextSize && equalItems === prevSize ? prev : copy;\n}\n/**\n* Equivalent to `Reflect.ownKeys`, but ensures that objects are \"clone-friendly\":\n* will return false if object has any non-enumerable properties.\n*\n* Optimized for the common case where objects have no symbol properties.\n*/\nfunction getEnumerableOwnKeys(o) {\n\tconst names = Object.getOwnPropertyNames(o);\n\tfor (const name of names) if (!isEnumerable.call(o, name)) return false;\n\tconst symbols = Object.getOwnPropertySymbols(o);\n\tif (symbols.length === 0) return names;\n\tconst keys = names;\n\tfor (const symbol of symbols) {\n\t\tif (!isEnumerable.call(o, symbol)) return false;\n\t\tkeys.push(symbol);\n\t}\n\treturn keys;\n}\nfunction isPlainObject(o) {\n\tif (!hasObjectPrototype(o)) return false;\n\tconst ctor = o.constructor;\n\tif (typeof ctor === \"undefined\") return true;\n\tconst prot = ctor.prototype;\n\tif (!hasObjectPrototype(prot)) return false;\n\tif (!prot.hasOwnProperty(\"isPrototypeOf\")) return false;\n\treturn true;\n}\nfunction hasObjectPrototype(o) {\n\treturn Object.prototype.toString.call(o) === \"[object Object]\";\n}\n/**\n* Check if a value is a \"plain\" array (no extra enumerable keys).\n*/\nfunction isPlainArray(value) {\n\treturn Array.isArray(value) && value.length === Object.keys(value).length;\n}\n/**\n* Perform a deep equality check with options for partial comparison and\n* ignoring `undefined` values. Optimized for router state comparisons.\n*/\nfunction deepEqual(a, b, opts) {\n\tif (a === b) return true;\n\tif (typeof a !== typeof b) return false;\n\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\tif (a.length !== b.length) return false;\n\t\tfor (let i = 0, l = a.length; i < l; i++) if (!deepEqual(a[i], b[i], opts)) return false;\n\t\treturn true;\n\t}\n\tif (isPlainObject(a) && isPlainObject(b)) {\n\t\tconst ignoreUndefined = opts?.ignoreUndefined ?? true;\n\t\tif (opts?.partial) {\n\t\t\tfor (const k in b) if (!ignoreUndefined || b[k] !== void 0) {\n\t\t\t\tif (!deepEqual(a[k], b[k], opts)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tlet aCount = 0;\n\t\tif (!ignoreUndefined) aCount = Object.keys(a).length;\n\t\telse for (const k in a) if (a[k] !== void 0) aCount++;\n\t\tlet bCount = 0;\n\t\tfor (const k in b) if (!ignoreUndefined || b[k] !== void 0) {\n\t\t\tbCount++;\n\t\t\tif (bCount > aCount || !deepEqual(a[k], b[k], opts)) return false;\n\t\t}\n\t\treturn aCount === bCount;\n\t}\n\treturn false;\n}\n/**\n* Create a promise with exposed resolve/reject and status fields.\n* Useful for coordinating async router lifecycle operations.\n*/\nfunction createControlledPromise(onResolve) {\n\tlet resolveLoadPromise;\n\tlet rejectLoadPromise;\n\tconst controlledPromise = new Promise((resolve, reject) => {\n\t\tresolveLoadPromise = resolve;\n\t\trejectLoadPromise = reject;\n\t});\n\tcontrolledPromise.status = \"pending\";\n\tcontrolledPromise.resolve = (value) => {\n\t\tcontrolledPromise.status = \"resolved\";\n\t\tcontrolledPromise.value = value;\n\t\tresolveLoadPromise(value);\n\t\tonResolve?.(value);\n\t};\n\tcontrolledPromise.reject = (e) => {\n\t\tcontrolledPromise.status = \"rejected\";\n\t\trejectLoadPromise(e);\n\t};\n\treturn controlledPromise;\n}\n/**\n* Heuristically detect dynamic import \"module not found\" errors\n* across major browsers for lazy route component handling.\n*/\nfunction isModuleNotFoundError(error) {\n\tif (typeof error?.message !== \"string\") return false;\n\treturn error.message.startsWith(\"Failed to fetch dynamically imported module\") || error.message.startsWith(\"error loading dynamically imported module\") || error.message.startsWith(\"Importing a module script failed\");\n}\nfunction isPromise(value) {\n\treturn Boolean(value && typeof value === \"object\" && typeof value.then === \"function\");\n}\nfunction findLast(array, predicate) {\n\tfor (let i = array.length - 1; i >= 0; i--) {\n\t\tconst item = array[i];\n\t\tif (predicate(item)) return item;\n\t}\n}\n/**\n* Re-encode characters that are unsafe in URL paths.\n* Includes ASCII control characters (0x00-0x1F, 0x7F) and a subset of the\n* WHATWG URL \"path percent-encode set\" (\", <, >, `, {, }).\n*\n* Space (0x20) is intentionally excluded — decodeURI decodes %20 to space\n* and the router stores decoded spaces in location.pathname. The existing\n* encodePathLikeUrl already handles re-encoding spaces for outgoing URLs.\n*\n* These characters are decoded by decodeURI but must remain percent-encoded\n* in paths to match how upstream layers (CDNs, edge middleware, browsers)\n* interpret the URL, preventing infinite redirect loops and path mismatches.\n*/\nconst PATH_UNSAFE_RE = /[\\x00-\\x1f\\x7f\"<>`{}]/g;\nfunction sanitizePathSegment(segment) {\n\treturn segment.replace(PATH_UNSAFE_RE, (ch) => \"%\" + ch.charCodeAt(0).toString(16).toUpperCase().padStart(2, \"0\"));\n}\nfunction decodeSegment(segment) {\n\tlet decoded;\n\ttry {\n\t\tdecoded = decodeURI(segment);\n\t} catch {\n\t\tdecoded = segment.replaceAll(/%[0-9A-F]{2}/gi, (match) => {\n\t\t\ttry {\n\t\t\t\treturn decodeURI(match);\n\t\t\t} catch {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t});\n\t}\n\treturn sanitizePathSegment(decoded);\n}\n/**\n* Default list of URL protocols to allow in links, redirects, and navigation.\n* Any absolute URL protocol not in this list is treated as dangerous by default.\n*/\nconst DEFAULT_PROTOCOL_ALLOWLIST = [\n\t\"http:\",\n\t\"https:\",\n\t\"mailto:\",\n\t\"tel:\"\n];\n/**\n* Check if a URL string uses a protocol that is not in the allowlist.\n* Returns true for blocked protocols like javascript:, blob:, data:, etc.\n*\n* The URL constructor correctly normalizes:\n* - Mixed case (JavaScript: → javascript:)\n* - Whitespace/control characters (java\\nscript: → javascript:)\n* - Leading whitespace\n*\n* For relative URLs (no protocol), returns false (safe).\n*\n* @param url - The URL string to check\n* @param allowlist - Set of protocols to allow\n* @returns true if the URL uses a protocol that is not allowed\n*/\nfunction isDangerousProtocol(url, allowlist) {\n\tif (!url) return false;\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn !allowlist.has(parsed.protocol);\n\t} catch {\n\t\treturn false;\n\t}\n}\nconst HTML_ESCAPE_LOOKUP = {\n\t\"&\": \"\\\\u0026\",\n\t\">\": \"\\\\u003e\",\n\t\"<\": \"\\\\u003c\",\n\t\"\\u2028\": \"\\\\u2028\",\n\t\"\\u2029\": \"\\\\u2029\"\n};\nconst HTML_ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\n/**\n* Escape HTML special characters in a string to prevent XSS attacks\n* when embedding strings in script tags during SSR.\n*\n* This is essential for preventing XSS vulnerabilities when user-controlled\n* content is embedded in inline scripts.\n*/\nfunction escapeHtml(str) {\n\treturn str.replace(HTML_ESCAPE_REGEX, (match) => HTML_ESCAPE_LOOKUP[match]);\n}\nfunction decodePath(path) {\n\tif (!path) return {\n\t\tpath,\n\t\thandledProtocolRelativeURL: false\n\t};\n\tif (!/[%\\\\\\x00-\\x1f\\x7f]/.test(path) && !path.startsWith(\"//\")) return {\n\t\tpath,\n\t\thandledProtocolRelativeURL: false\n\t};\n\tconst re = /%25|%5C/gi;\n\tlet cursor = 0;\n\tlet result = \"\";\n\tlet match;\n\twhile (null !== (match = re.exec(path))) {\n\t\tresult += decodeSegment(path.slice(cursor, match.index)) + match[0];\n\t\tcursor = re.lastIndex;\n\t}\n\tresult = result + decodeSegment(cursor ? path.slice(cursor) : path);\n\tlet handledProtocolRelativeURL = false;\n\tif (result.startsWith(\"//\")) {\n\t\thandledProtocolRelativeURL = true;\n\t\tresult = \"/\" + result.replace(/^\\/+/, \"\");\n\t}\n\treturn {\n\t\tpath: result,\n\t\thandledProtocolRelativeURL\n\t};\n}\n/**\n* Encodes a path the same way `new URL()` would, but without the overhead of full URL parsing.\n*\n* This function encodes:\n* - Whitespace characters (spaces → %20, tabs → %09, etc.)\n* - Non-ASCII/Unicode characters (emojis, accented characters, etc.)\n*\n* It preserves:\n* - Already percent-encoded sequences (won't double-encode %2F, %25, etc.)\n* - ASCII special characters valid in URL paths (@, $, &, +, etc.)\n* - Forward slashes as path separators\n*\n* Used to generate proper href values for SSR without constructing URL objects.\n*\n* @example\n* encodePathLikeUrl('/path/file name.pdf') // '/path/file%20name.pdf'\n* encodePathLikeUrl('/path/日本語') // '/path/%E6%97%A5%E6%9C%AC%E8%AA%9E'\n* encodePathLikeUrl('/path/already%20encoded') // '/path/already%20encoded' (preserved)\n*/\nfunction encodePathLikeUrl(path) {\n\tif (!/\\s|[^\\u0000-\\u007F]/.test(path)) return path;\n\treturn path.replace(/\\s|[^\\u0000-\\u007F]/gu, encodeURIComponent);\n}\n/**\n* Builds the dev-mode CSS styles URL for route-scoped CSS collection.\n* Used by HeadContent components in all framework implementations to construct\n* the URL for the `/@tanstack-start/styles.css` endpoint.\n*\n* @param basepath - The router's basepath (may or may not have leading slash)\n* @param routeIds - Array of matched route IDs to include in the CSS collection\n* @returns The full URL path for the dev styles CSS endpoint\n*/\nfunction buildDevStylesUrl(basepath, routeIds) {\n\tconst trimmedBasepath = basepath.replace(/^\\/+|\\/+$/g, \"\");\n\treturn `${trimmedBasepath === \"\" ? \"\" : `/${trimmedBasepath}`}/@tanstack-start/styles.css?routes=${encodeURIComponent(routeIds.join(\",\"))}`;\n}\nfunction arraysEqual(a, b) {\n\tif (a === b) return true;\n\tif (a.length !== b.length) return false;\n\tfor (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;\n\treturn true;\n}\n//#endregion\nexport { DEFAULT_PROTOCOL_ALLOWLIST, arraysEqual, buildDevStylesUrl, createControlledPromise, decodePath, deepEqual, encodePathLikeUrl, escapeHtml, findLast, functionalUpdate, hasKeys, hasOwn, isDangerousProtocol, isModuleNotFoundError, isPlainArray, isPlainObject, isPromise, last, nullReplaceEqualDeep, replaceEqualDeep };\n\n//# sourceMappingURL=utils.js.map","//#region src/invariant.ts\nfunction invariant() {\n\tthrow new Error(\"Invariant failed\");\n}\n//#endregion\nexport { invariant };\n\n//# sourceMappingURL=invariant.js.map","//#region src/lru-cache.ts\nfunction createLRUCache(max) {\n\tconst cache = /* @__PURE__ */ new Map();\n\tlet oldest;\n\tlet newest;\n\tconst touch = (entry) => {\n\t\tif (!entry.next) return;\n\t\tif (!entry.prev) {\n\t\t\tentry.next.prev = void 0;\n\t\t\toldest = entry.next;\n\t\t\tentry.next = void 0;\n\t\t\tif (newest) {\n\t\t\t\tentry.prev = newest;\n\t\t\t\tnewest.next = entry;\n\t\t\t}\n\t\t} else {\n\t\t\tentry.prev.next = entry.next;\n\t\t\tentry.next.prev = entry.prev;\n\t\t\tentry.next = void 0;\n\t\t\tif (newest) {\n\t\t\t\tnewest.next = entry;\n\t\t\t\tentry.prev = newest;\n\t\t\t}\n\t\t}\n\t\tnewest = entry;\n\t};\n\treturn {\n\t\tget(key) {\n\t\t\tconst entry = cache.get(key);\n\t\t\tif (!entry) return void 0;\n\t\t\ttouch(entry);\n\t\t\treturn entry.value;\n\t\t},\n\t\tset(key, value) {\n\t\t\tif (cache.size >= max && oldest) {\n\t\t\t\tconst toDelete = oldest;\n\t\t\t\tcache.delete(toDelete.key);\n\t\t\t\tif (toDelete.next) {\n\t\t\t\t\toldest = toDelete.next;\n\t\t\t\t\ttoDelete.next.prev = void 0;\n\t\t\t\t}\n\t\t\t\tif (toDelete === newest) newest = void 0;\n\t\t\t}\n\t\t\tconst existing = cache.get(key);\n\t\t\tif (existing) {\n\t\t\t\texisting.value = value;\n\t\t\t\ttouch(existing);\n\t\t\t} else {\n\t\t\t\tconst entry = {\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tprev: newest\n\t\t\t\t};\n\t\t\t\tif (newest) newest.next = entry;\n\t\t\t\tnewest = entry;\n\t\t\t\tif (!oldest) oldest = entry;\n\t\t\t\tcache.set(key, entry);\n\t\t\t}\n\t\t},\n\t\tclear() {\n\t\t\tcache.clear();\n\t\t\toldest = void 0;\n\t\t\tnewest = void 0;\n\t\t}\n\t};\n}\n//#endregion\nexport { createLRUCache };\n\n//# sourceMappingURL=lru-cache.js.map","import { last } from \"./utils.js\";\nimport { invariant } from \"./invariant.js\";\nimport { createLRUCache } from \"./lru-cache.js\";\nconst SEGMENT_TYPE_INDEX = 4;\nconst SEGMENT_TYPE_PATHLESS = 5;\nfunction getOpenAndCloseBraces(part) {\n\tconst openBrace = part.indexOf(\"{\");\n\tif (openBrace === -1) return null;\n\tconst closeBrace = part.indexOf(\"}\", openBrace);\n\tif (closeBrace === -1) return null;\n\tif (openBrace + 1 >= part.length) return null;\n\treturn [openBrace, closeBrace];\n}\n/**\n* Populates the `output` array with the parsed representation of the given `segment` string.\n*\n* Usage:\n* ```ts\n* let output\n* let cursor = 0\n* while (cursor < path.length) {\n* output = parseSegment(path, cursor, output)\n* const end = output[5]\n* cursor = end + 1\n* ```\n*\n* `output` is stored outside to avoid allocations during repeated calls. It doesn't need to be typed\n* or initialized, it will be done automatically.\n*/\nfunction parseSegment(path, start, output = new Uint16Array(6)) {\n\tconst next = path.indexOf(\"/\", start);\n\tconst end = next === -1 ? path.length : next;\n\tconst part = path.substring(start, end);\n\tif (!part || !part.includes(\"$\")) {\n\t\toutput[0] = 0;\n\t\toutput[1] = start;\n\t\toutput[2] = start;\n\t\toutput[3] = end;\n\t\toutput[4] = end;\n\t\toutput[5] = end;\n\t\treturn output;\n\t}\n\tif (part === \"$\") {\n\t\tconst total = path.length;\n\t\toutput[0] = 2;\n\t\toutput[1] = start;\n\t\toutput[2] = start;\n\t\toutput[3] = total;\n\t\toutput[4] = total;\n\t\toutput[5] = total;\n\t\treturn output;\n\t}\n\tif (part.charCodeAt(0) === 36) {\n\t\toutput[0] = 1;\n\t\toutput[1] = start;\n\t\toutput[2] = start + 1;\n\t\toutput[3] = end;\n\t\toutput[4] = end;\n\t\toutput[5] = end;\n\t\treturn output;\n\t}\n\tconst braces = getOpenAndCloseBraces(part);\n\tif (braces) {\n\t\tconst [openBrace, closeBrace] = braces;\n\t\tconst firstChar = part.charCodeAt(openBrace + 1);\n\t\tif (firstChar === 45) {\n\t\t\tif (openBrace + 2 < part.length && part.charCodeAt(openBrace + 2) === 36) {\n\t\t\t\tconst paramStart = openBrace + 3;\n\t\t\t\tconst paramEnd = closeBrace;\n\t\t\t\tif (paramStart < paramEnd) {\n\t\t\t\t\toutput[0] = 3;\n\t\t\t\t\toutput[1] = start + openBrace;\n\t\t\t\t\toutput[2] = start + paramStart;\n\t\t\t\t\toutput[3] = start + paramEnd;\n\t\t\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\t\t\toutput[5] = end;\n\t\t\t\t\treturn output;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (firstChar === 36) {\n\t\t\tconst dollarPos = openBrace + 1;\n\t\t\tconst afterDollar = openBrace + 2;\n\t\t\tif (afterDollar === closeBrace) {\n\t\t\t\toutput[0] = 2;\n\t\t\t\toutput[1] = start + openBrace;\n\t\t\t\toutput[2] = start + dollarPos;\n\t\t\t\toutput[3] = start + afterDollar;\n\t\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\t\toutput[5] = path.length;\n\t\t\t\treturn output;\n\t\t\t}\n\t\t\toutput[0] = 1;\n\t\t\toutput[1] = start + openBrace;\n\t\t\toutput[2] = start + afterDollar;\n\t\t\toutput[3] = start + closeBrace;\n\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\toutput[5] = end;\n\t\t\treturn output;\n\t\t}\n\t}\n\toutput[0] = 0;\n\toutput[1] = start;\n\toutput[2] = start;\n\toutput[3] = end;\n\toutput[4] = end;\n\toutput[5] = end;\n\treturn output;\n}\n/**\n* Recursively parses the segments of the given route tree and populates a segment trie.\n*\n* @param data A reusable Uint16Array for parsing segments. (non important, we're just avoiding allocations)\n* @param route The current route to parse.\n* @param start The starting index for parsing within the route's full path.\n* @param node The current segment node in the trie to populate.\n* @param onRoute Callback invoked for each route processed.\n*/\nfunction parseSegments(defaultCaseSensitive, data, route, start, node, depth, onRoute) {\n\tonRoute?.(route);\n\tlet cursor = start;\n\t{\n\t\tconst path = route.fullPath ?? route.from;\n\t\tconst length = path.length;\n\t\tconst caseSensitive = route.options?.caseSensitive ?? defaultCaseSensitive;\n\t\tconst parseParams = route.options?.params?.parse ?? route.options?.parseParams;\n\t\twhile (cursor < length) {\n\t\t\tconst segment = parseSegment(path, cursor, data);\n\t\t\tlet nextNode;\n\t\t\tconst start = cursor;\n\t\t\tconst end = segment[5];\n\t\t\tcursor = end + 1;\n\t\t\tdepth++;\n\t\t\tswitch (segment[0]) {\n\t\t\t\tcase 0: {\n\t\t\t\t\tconst value = path.substring(segment[2], segment[3]);\n\t\t\t\t\tif (caseSensitive) {\n\t\t\t\t\t\tconst existingNode = node.static?.get(value);\n\t\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.static ??= /* @__PURE__ */ new Map();\n\t\t\t\t\t\t\tconst next = createStaticNode(route.fullPath ?? route.from);\n\t\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\t\tnode.static.set(value, next);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst name = value.toLowerCase();\n\t\t\t\t\t\tconst existingNode = node.staticInsensitive?.get(name);\n\t\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.staticInsensitive ??= /* @__PURE__ */ new Map();\n\t\t\t\t\t\t\tconst next = createStaticNode(route.fullPath ?? route.from);\n\t\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\t\tnode.staticInsensitive.set(name, next);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 1: {\n\t\t\t\t\tconst prefix_raw = path.substring(start, segment[1]);\n\t\t\t\t\tconst suffix_raw = path.substring(segment[4], end);\n\t\t\t\t\tconst actuallyCaseSensitive = caseSensitive && !!(prefix_raw || suffix_raw);\n\t\t\t\t\tconst prefix = !prefix_raw ? void 0 : actuallyCaseSensitive ? prefix_raw : prefix_raw.toLowerCase();\n\t\t\t\t\tconst suffix = !suffix_raw ? void 0 : actuallyCaseSensitive ? suffix_raw : suffix_raw.toLowerCase();\n\t\t\t\t\tconst existingNode = !parseParams && node.dynamic?.find((s) => !s.parse && s.caseSensitive === actuallyCaseSensitive && s.prefix === prefix && s.suffix === suffix);\n\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst next = createDynamicNode(1, route.fullPath ?? route.from, actuallyCaseSensitive, prefix, suffix);\n\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\tnode.dynamic ??= [];\n\t\t\t\t\t\tnode.dynamic.push(next);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 3: {\n\t\t\t\t\tconst prefix_raw = path.substring(start, segment[1]);\n\t\t\t\t\tconst suffix_raw = path.substring(segment[4], end);\n\t\t\t\t\tconst actuallyCaseSensitive = caseSensitive && !!(prefix_raw || suffix_raw);\n\t\t\t\t\tconst prefix = !prefix_raw ? void 0 : actuallyCaseSensitive ? prefix_raw : prefix_raw.toLowerCase();\n\t\t\t\t\tconst suffix = !suffix_raw ? void 0 : actuallyCaseSensitive ? suffix_raw : suffix_raw.toLowerCase();\n\t\t\t\t\tconst existingNode = !parseParams && node.optional?.find((s) => !s.parse && s.caseSensitive === actuallyCaseSensitive && s.prefix === prefix && s.suffix === suffix);\n\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst next = createDynamicNode(3, route.fullPath ?? route.from, actuallyCaseSensitive, prefix, suffix);\n\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\tnode.optional ??= [];\n\t\t\t\t\t\tnode.optional.push(next);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 2: {\n\t\t\t\t\tconst prefix_raw = path.substring(start, segment[1]);\n\t\t\t\t\tconst suffix_raw = path.substring(segment[4], end);\n\t\t\t\t\tconst actuallyCaseSensitive = caseSensitive && !!(prefix_raw || suffix_raw);\n\t\t\t\t\tconst prefix = !prefix_raw ? void 0 : actuallyCaseSensitive ? prefix_raw : prefix_raw.toLowerCase();\n\t\t\t\t\tconst suffix = !suffix_raw ? void 0 : actuallyCaseSensitive ? suffix_raw : suffix_raw.toLowerCase();\n\t\t\t\t\tconst next = createDynamicNode(2, route.fullPath ?? route.from, actuallyCaseSensitive, prefix, suffix);\n\t\t\t\t\tnextNode = next;\n\t\t\t\t\tnext.parent = node;\n\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\tnode.wildcard ??= [];\n\t\t\t\t\tnode.wildcard.push(next);\n\t\t\t\t}\n\t\t\t}\n\t\t\tnode = nextNode;\n\t\t}\n\t\tif (parseParams && route.children && !route.isRoot && route.id && route.id.charCodeAt(route.id.lastIndexOf(\"/\") + 1) === 95) {\n\t\t\tconst pathlessNode = createStaticNode(route.fullPath ?? route.from);\n\t\t\tpathlessNode.kind = SEGMENT_TYPE_PATHLESS;\n\t\t\tpathlessNode.parent = node;\n\t\t\tdepth++;\n\t\t\tpathlessNode.depth = depth;\n\t\t\tnode.pathless ??= [];\n\t\t\tnode.pathless.push(pathlessNode);\n\t\t\tnode = pathlessNode;\n\t\t}\n\t\tconst isLeaf = (route.path || !route.children) && !route.isRoot;\n\t\tif (isLeaf && path.endsWith(\"/\")) {\n\t\t\tconst indexNode = createStaticNode(route.fullPath ?? route.from);\n\t\t\tindexNode.kind = SEGMENT_TYPE_INDEX;\n\t\t\tindexNode.parent = node;\n\t\t\tdepth++;\n\t\t\tindexNode.depth = depth;\n\t\t\tnode.index = indexNode;\n\t\t\tnode = indexNode;\n\t\t}\n\t\tnode.parse = parseParams ?? null;\n\t\tnode.priority = route.options?.params?.priority ?? 0;\n\t\tif (isLeaf && !node.route) {\n\t\t\tnode.route = route;\n\t\t\tnode.fullPath = route.fullPath ?? route.from;\n\t\t}\n\t}\n\tif (route.children) for (const child of route.children) parseSegments(defaultCaseSensitive, data, child, cursor, node, depth, onRoute);\n}\nfunction sortDynamic(a, b) {\n\tif (a.parse && !b.parse) return -1;\n\tif (!a.parse && b.parse) return 1;\n\tif (a.parse && b.parse && (a.priority || b.priority)) return b.priority - a.priority;\n\tif (a.prefix && b.prefix && a.prefix !== b.prefix) {\n\t\tif (a.prefix.startsWith(b.prefix)) return -1;\n\t\tif (b.prefix.startsWith(a.prefix)) return 1;\n\t}\n\tif (a.suffix && b.suffix && a.suffix !== b.suffix) {\n\t\tif (a.suffix.endsWith(b.suffix)) return -1;\n\t\tif (b.suffix.endsWith(a.suffix)) return 1;\n\t}\n\tif (a.prefix && !b.prefix) return -1;\n\tif (!a.prefix && b.prefix) return 1;\n\tif (a.suffix && !b.suffix) return -1;\n\tif (!a.suffix && b.suffix) return 1;\n\tif (a.caseSensitive && !b.caseSensitive) return -1;\n\tif (!a.caseSensitive && b.caseSensitive) return 1;\n\treturn 0;\n}\nfunction sortTreeNodes(node) {\n\tif (node.pathless) for (const child of node.pathless) sortTreeNodes(child);\n\tif (node.static) for (const child of node.static.values()) sortTreeNodes(child);\n\tif (node.staticInsensitive) for (const child of node.staticInsensitive.values()) sortTreeNodes(child);\n\tif (node.dynamic?.length) {\n\t\tnode.dynamic.sort(sortDynamic);\n\t\tfor (const child of node.dynamic) sortTreeNodes(child);\n\t}\n\tif (node.optional?.length) {\n\t\tnode.optional.sort(sortDynamic);\n\t\tfor (const child of node.optional) sortTreeNodes(child);\n\t}\n\tif (node.wildcard?.length) {\n\t\tnode.wildcard.sort(sortDynamic);\n\t\tfor (const child of node.wildcard) sortTreeNodes(child);\n\t}\n}\nfunction createStaticNode(fullPath) {\n\treturn {\n\t\tkind: 0,\n\t\tdepth: 0,\n\t\tpathless: null,\n\t\tindex: null,\n\t\tstatic: null,\n\t\tstaticInsensitive: null,\n\t\tdynamic: null,\n\t\toptional: null,\n\t\twildcard: null,\n\t\troute: null,\n\t\tfullPath,\n\t\tparent: null,\n\t\tparse: null,\n\t\tpriority: 0\n\t};\n}\n/**\n* Keys must be declared in the same order as in `SegmentNode` type,\n* to ensure they are represented as the same object class in the engine.\n*/\nfunction createDynamicNode(kind, fullPath, caseSensitive, prefix, suffix) {\n\treturn {\n\t\tkind,\n\t\tdepth: 0,\n\t\tpathless: null,\n\t\tindex: null,\n\t\tstatic: null,\n\t\tstaticInsensitive: null,\n\t\tdynamic: null,\n\t\toptional: null,\n\t\twildcard: null,\n\t\troute: null,\n\t\tfullPath,\n\t\tparent: null,\n\t\tparse: null,\n\t\tpriority: 0,\n\t\tcaseSensitive,\n\t\tprefix,\n\t\tsuffix\n\t};\n}\nfunction processRouteMasks(routeList, processedTree) {\n\tconst segmentTree = createStaticNode(\"/\");\n\tconst data = new Uint16Array(6);\n\tfor (const route of routeList) parseSegments(false, data, route, 1, segmentTree, 0);\n\tsortTreeNodes(segmentTree);\n\tprocessedTree.masksTree = segmentTree;\n\tprocessedTree.flatCache = createLRUCache(1e3);\n}\n/**\n* Take an arbitrary list of routes, create a tree from them (if it hasn't been created already), and match a path against it.\n*/\nfunction findFlatMatch(path, processedTree) {\n\tpath ||= \"/\";\n\tconst cached = processedTree.flatCache.get(path);\n\tif (cached) return cached;\n\tconst result = findMatch(path, processedTree.masksTree);\n\tprocessedTree.flatCache.set(path, result);\n\treturn result;\n}\n/**\n* @deprecated keep until v2 so that `router.matchRoute` can keep not caring about the actual route tree\n*/\nfunction findSingleMatch(from, caseSensitive, fuzzy, path, processedTree) {\n\tfrom ||= \"/\";\n\tpath ||= \"/\";\n\tconst key = caseSensitive ? `case\\0${from}` : from;\n\tlet tree = processedTree.singleCache.get(key);\n\tif (!tree) {\n\t\ttree = createStaticNode(\"/\");\n\t\tparseSegments(caseSensitive, new Uint16Array(6), { from }, 1, tree, 0);\n\t\tprocessedTree.singleCache.set(key, tree);\n\t}\n\treturn findMatch(path, tree, fuzzy);\n}\nfunction findRouteMatch(path, processedTree, fuzzy = false) {\n\tconst key = fuzzy ? path : `nofuzz\\0${path}`;\n\tconst cached = processedTree.matchCache.get(key);\n\tif (cached !== void 0) return cached;\n\tpath ||= \"/\";\n\tlet result;\n\ttry {\n\t\tresult = findMatch(path, processedTree.segmentTree, fuzzy);\n\t} catch (err) {\n\t\tif (err instanceof URIError) result = null;\n\t\telse throw err;\n\t}\n\tif (result) result.branch = buildRouteBranch(result.route);\n\tprocessedTree.matchCache.set(key, result);\n\treturn result;\n}\n/** Trim trailing slashes (except preserving root '/'). */\nfunction trimPathRight(path) {\n\treturn path === \"/\" ? path : path.replace(/\\/{1,}$/, \"\");\n}\n/**\n* Processes a route tree into a segment trie for efficient path matching.\n* Also builds lookup maps for routes by ID and by trimmed full path.\n*/\nfunction processRouteTree(routeTree, caseSensitive = false, initRoute) {\n\tconst segmentTree = createStaticNode(routeTree.fullPath);\n\tconst data = new Uint16Array(6);\n\tconst routesById = {};\n\tconst routesByPath = {};\n\tlet index = 0;\n\tparseSegments(caseSensitive, data, routeTree, 1, segmentTree, 0, (route) => {\n\t\tinitRoute?.(route, index);\n\t\tif (route.id in routesById) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Duplicate routes found with id: ${String(route.id)}`);\n\t\t\tinvariant();\n\t\t}\n\t\troutesById[route.id] = route;\n\t\tif (index !== 0 && route.path) {\n\t\t\tconst trimmedFullPath = trimPathRight(route.fullPath);\n\t\t\tif (!routesByPath[trimmedFullPath] || route.fullPath.endsWith(\"/\")) routesByPath[trimmedFullPath] = route;\n\t\t}\n\t\tindex++;\n\t});\n\tsortTreeNodes(segmentTree);\n\treturn {\n\t\tprocessedTree: {\n\t\t\tsegmentTree,\n\t\t\tsingleCache: createLRUCache(1e3),\n\t\t\tmatchCache: createLRUCache(1e3),\n\t\t\tflatCache: null,\n\t\t\tmasksTree: null\n\t\t},\n\t\troutesById,\n\t\troutesByPath\n\t};\n}\nfunction findMatch(path, segmentTree, fuzzy = false) {\n\tconst parts = path.split(\"/\");\n\tconst leaf = getNodeMatch(path, parts, segmentTree, fuzzy);\n\tif (!leaf) return null;\n\tconst [rawParams] = extractParams(path, parts, leaf);\n\treturn {\n\t\troute: leaf.node.route,\n\t\trawParams\n\t};\n}\n/**\n* This function is \"resumable\":\n* - the `leaf` input can contain `extract` and `rawParams` properties from a previous `extractParams` call\n* - the returned `state` can be passed back as `extract` in a future call to continue extracting params from where we left off\n*\n* Inputs are *not* mutated.\n*/\nfunction extractParams(path, parts, leaf) {\n\tconst list = buildBranch(leaf.node);\n\tlet nodeParts = null;\n\tconst rawParams = Object.create(null);\n\t/** which segment of the path we're currently processing */\n\tlet partIndex = leaf.extract?.part ?? 0;\n\t/** which node of the route tree branch we're currently processing */\n\tlet nodeIndex = leaf.extract?.node ?? 0;\n\t/** index of the 1st character of the segment we're processing in the path string */\n\tlet pathIndex = leaf.extract?.path ?? 0;\n\t/** which fullPath segment we're currently processing */\n\tlet segmentCount = leaf.extract?.segment ?? 0;\n\tfor (; nodeIndex < list.length; partIndex++, nodeIndex++, pathIndex++, segmentCount++) {\n\t\tconst node = list[nodeIndex];\n\t\tif (node.kind === SEGMENT_TYPE_INDEX) break;\n\t\tif (node.kind === SEGMENT_TYPE_PATHLESS) {\n\t\t\tsegmentCount--;\n\t\t\tpartIndex--;\n\t\t\tpathIndex--;\n\t\t\tcontinue;\n\t\t}\n\t\tconst part = parts[partIndex];\n\t\tconst currentPathIndex = pathIndex;\n\t\tif (part) pathIndex += part.length;\n\t\tif (node.kind === 1) {\n\t\t\tnodeParts ??= leaf.node.fullPath.split(\"/\");\n\t\t\tconst nodePart = nodeParts[segmentCount];\n\t\t\tconst preLength = node.prefix?.length ?? 0;\n\t\t\tif (nodePart.charCodeAt(preLength) === 123) {\n\t\t\t\tconst sufLength = node.suffix?.length ?? 0;\n\t\t\t\tconst name = nodePart.substring(preLength + 2, nodePart.length - sufLength - 1);\n\t\t\t\tconst value = part.substring(preLength, part.length - sufLength);\n\t\t\t\trawParams[name] = decodeURIComponent(value);\n\t\t\t} else {\n\t\t\t\tconst name = nodePart.substring(1);\n\t\t\t\trawParams[name] = decodeURIComponent(part);\n\t\t\t}\n\t\t} else if (node.kind === 3) {\n\t\t\tif (leaf.skipped & 1 << nodeIndex) {\n\t\t\t\tpartIndex--;\n\t\t\t\tpathIndex = currentPathIndex - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tnodeParts ??= leaf.node.fullPath.split(\"/\");\n\t\t\tconst nodePart = nodeParts[segmentCount];\n\t\t\tconst preLength = node.prefix?.length ?? 0;\n\t\t\tconst sufLength = node.suffix?.length ?? 0;\n\t\t\tconst name = nodePart.substring(preLength + 3, nodePart.length - sufLength - 1);\n\t\t\tconst value = node.suffix || node.prefix ? part.substring(preLength, part.length - sufLength) : part;\n\t\t\tif (value) rawParams[name] = decodeURIComponent(value);\n\t\t} else if (node.kind === 2) {\n\t\t\tconst n = node;\n\t\t\tconst value = path.substring(currentPathIndex + (n.prefix?.length ?? 0), path.length - (n.suffix?.length ?? 0));\n\t\t\tconst splat = decodeURIComponent(value);\n\t\t\trawParams[\"*\"] = splat;\n\t\t\trawParams._splat = splat;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (leaf.rawParams) Object.assign(rawParams, leaf.rawParams);\n\treturn [rawParams, {\n\t\tpart: partIndex,\n\t\tnode: nodeIndex,\n\t\tpath: pathIndex,\n\t\tsegment: segmentCount\n\t}];\n}\nfunction buildRouteBranch(route) {\n\tconst list = [route];\n\twhile (route.parentRoute) {\n\t\troute = route.parentRoute;\n\t\tlist.push(route);\n\t}\n\tlist.reverse();\n\treturn list;\n}\nfunction buildBranch(node) {\n\tconst list = Array(node.depth + 1);\n\tdo {\n\t\tlist[node.depth] = node;\n\t\tnode = node.parent;\n\t} while (node);\n\treturn list;\n}\nfunction getNodeMatch(path, parts, segmentTree, fuzzy) {\n\tif (path === \"/\" && segmentTree.index) return {\n\t\tnode: segmentTree.index,\n\t\tskipped: 0\n\t};\n\tconst trailingSlash = !last(parts);\n\tconst pathIsIndex = trailingSlash && path !== \"/\";\n\tconst partsLength = parts.length - (trailingSlash ? 1 : 0);\n\tconst stack = [{\n\t\tnode: segmentTree,\n\t\tindex: 1,\n\t\tskipped: 0,\n\t\tdepth: 1,\n\t\tstatics: 0,\n\t\tdynamics: 0,\n\t\toptionals: 0\n\t}];\n\tlet bestFuzzy = null;\n\tlet bestMatch = null;\n\twhile (stack.length) {\n\t\tconst frame = stack.pop();\n\t\tconst { node, index, skipped, depth, statics, dynamics, optionals } = frame;\n\t\tlet { extract, rawParams } = frame;\n\t\tif (node.kind === 2 && node.route && !isFrameMoreSpecific(bestMatch, frame)) continue;\n\t\tif (node.parse) {\n\t\t\tif (!validateParseParams(path, parts, frame)) continue;\n\t\t\trawParams = frame.rawParams;\n\t\t\textract = frame.extract;\n\t\t}\n\t\tif (fuzzy && node.route && node.kind !== SEGMENT_TYPE_INDEX && isFrameMoreSpecific(bestFuzzy, frame)) bestFuzzy = frame;\n\t\tconst isBeyondPath = index === partsLength;\n\t\tif (isBeyondPath) {\n\t\t\tif (node.route && (!pathIsIndex || node.kind === SEGMENT_TYPE_INDEX || node.kind === 2) && isFrameMoreSpecific(bestMatch, frame)) bestMatch = frame;\n\t\t\tif (!node.optional && !node.wildcard && !node.index && !node.pathless) continue;\n\t\t}\n\t\tconst part = isBeyondPath ? void 0 : parts[index];\n\t\tlet lowerPart;\n\t\tif (isBeyondPath && node.index) {\n\t\t\tconst indexFrame = {\n\t\t\t\tnode: node.index,\n\t\t\t\tindex,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics,\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t};\n\t\t\tlet indexValid = true;\n\t\t\tif (node.index.parse) {\n\t\t\t\tif (!validateParseParams(path, parts, indexFrame)) indexValid = false;\n\t\t\t}\n\t\t\tif (indexValid) {\n\t\t\t\tif (!dynamics && !optionals && !skipped && isPerfectStaticMatch(statics, partsLength)) return indexFrame;\n\t\t\t\tif (isFrameMoreSpecific(bestMatch, indexFrame)) bestMatch = indexFrame;\n\t\t\t}\n\t\t}\n\t\tif (node.wildcard) for (let i = node.wildcard.length - 1; i >= 0; i--) {\n\t\t\tconst segment = node.wildcard[i];\n\t\t\tconst { prefix, suffix } = segment;\n\t\t\tif (prefix) {\n\t\t\t\tif (isBeyondPath) continue;\n\t\t\t\tif (!(segment.caseSensitive ? part : lowerPart ??= part.toLowerCase()).startsWith(prefix)) continue;\n\t\t\t}\n\t\t\tif (suffix) {\n\t\t\t\tif (isBeyondPath) continue;\n\t\t\t\tconst end = parts.slice(index).join(\"/\").slice(-suffix.length);\n\t\t\t\tif ((segment.caseSensitive ? end : end.toLowerCase()) !== suffix) continue;\n\t\t\t}\n\t\t\tstack.push({\n\t\t\t\tnode: segment,\n\t\t\t\tindex: partsLength,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics,\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (node.optional) {\n\t\t\tconst nextSkipped = skipped | 1 << depth;\n\t\t\tconst nextDepth = depth + 1;\n\t\t\tfor (let i = node.optional.length - 1; i >= 0; i--) {\n\t\t\t\tconst segment = node.optional[i];\n\t\t\t\tstack.push({\n\t\t\t\t\tnode: segment,\n\t\t\t\t\tindex,\n\t\t\t\t\tskipped: nextSkipped,\n\t\t\t\t\tdepth: nextDepth,\n\t\t\t\t\tstatics,\n\t\t\t\t\tdynamics,\n\t\t\t\t\toptionals,\n\t\t\t\t\textract,\n\t\t\t\t\trawParams\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!isBeyondPath) for (let i = node.optional.length - 1; i >= 0; i--) {\n\t\t\t\tconst segment = node.optional[i];\n\t\t\t\tconst { prefix, suffix } = segment;\n\t\t\t\tif (prefix || suffix) {\n\t\t\t\t\tconst casePart = segment.caseSensitive ? part : lowerPart ??= part.toLowerCase();\n\t\t\t\t\tif (prefix && !casePart.startsWith(prefix)) continue;\n\t\t\t\t\tif (suffix && !casePart.endsWith(suffix)) continue;\n\t\t\t\t}\n\t\t\t\tstack.push({\n\t\t\t\t\tnode: segment,\n\t\t\t\t\tindex: index + 1,\n\t\t\t\t\tskipped,\n\t\t\t\t\tdepth: nextDepth,\n\t\t\t\t\tstatics,\n\t\t\t\t\tdynamics,\n\t\t\t\t\toptionals: optionals + segmentScore(partsLength, index),\n\t\t\t\t\textract,\n\t\t\t\t\trawParams\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (!isBeyondPath && node.dynamic && part) for (let i = node.dynamic.length - 1; i >= 0; i--) {\n\t\t\tconst segment = node.dynamic[i];\n\t\t\tconst { prefix, suffix } = segment;\n\t\t\tif (prefix || suffix) {\n\t\t\t\tconst casePart = segment.caseSensitive ? part : lowerPart ??= part.toLowerCase();\n\t\t\t\tif (prefix && !casePart.startsWith(prefix)) continue;\n\t\t\t\tif (suffix && !casePart.endsWith(suffix)) continue;\n\t\t\t}\n\t\t\tstack.push({\n\t\t\t\tnode: segment,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics,\n\t\t\t\tdynamics: dynamics + segmentScore(partsLength, index),\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (!isBeyondPath && node.staticInsensitive) {\n\t\t\tconst match = node.staticInsensitive.get(lowerPart ??= part.toLowerCase());\n\t\t\tif (match) stack.push({\n\t\t\t\tnode: match,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics: statics + segmentScore(partsLength, index),\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (!isBeyondPath && node.static) {\n\t\t\tconst match = node.static.get(part);\n\t\t\tif (match) stack.push({\n\t\t\t\tnode: match,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tstatics: statics + segmentScore(partsLength, index),\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (node.pathless) {\n\t\t\tconst nextDepth = depth + 1;\n\t\t\tfor (let i = node.pathless.length - 1; i >= 0; i--) {\n\t\t\t\tconst segment = node.pathless[i];\n\t\t\t\tstack.push({\n\t\t\t\t\tnode: segment,\n\t\t\t\t\tindex,\n\t\t\t\t\tskipped,\n\t\t\t\t\tdepth: nextDepth,\n\t\t\t\t\tstatics,\n\t\t\t\t\tdynamics,\n\t\t\t\t\toptionals,\n\t\t\t\t\textract,\n\t\t\t\t\trawParams\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tif (bestMatch) return bestMatch;\n\tif (fuzzy && bestFuzzy) {\n\t\tlet sliceIndex = bestFuzzy.index;\n\t\tfor (let i = 0; i < bestFuzzy.index; i++) sliceIndex += parts[i].length;\n\t\tconst splat = sliceIndex === path.length ? \"/\" : path.slice(sliceIndex);\n\t\tbestFuzzy.rawParams ??= Object.create(null);\n\t\tbestFuzzy.rawParams[\"**\"] = decodeURIComponent(splat);\n\t\treturn bestFuzzy;\n\t}\n\treturn null;\n}\nfunction segmentScore(partsLength, index) {\n\treturn 2 ** (partsLength - index - 1);\n}\nfunction isPerfectStaticMatch(statics, partsLength) {\n\treturn statics === 2 ** (partsLength - 1) - 1;\n}\nfunction validateParseParams(path, parts, frame) {\n\tlet rawParams;\n\tlet state;\n\ttry {\n\t\t[rawParams, state] = extractParams(path, parts, frame);\n\t} catch {\n\t\treturn null;\n\t}\n\tframe.rawParams = rawParams;\n\tframe.extract = state;\n\tif (!frame.node.parse) return true;\n\ttry {\n\t\tif (frame.node.parse(rawParams) === false) return null;\n\t} catch {}\n\treturn true;\n}\nfunction isFrameMoreSpecific(prev, next) {\n\tif (!prev) return true;\n\treturn next.statics > prev.statics || next.statics === prev.statics && (next.dynamics > prev.dynamics || next.dynamics === prev.dynamics && (next.optionals > prev.optionals || next.optionals === prev.optionals && ((next.node.kind === SEGMENT_TYPE_INDEX) > (prev.node.kind === SEGMENT_TYPE_INDEX) || next.node.kind === SEGMENT_TYPE_INDEX === (prev.node.kind === SEGMENT_TYPE_INDEX) && next.depth > prev.depth)));\n}\n//#endregion\nexport { buildRouteBranch, findFlatMatch, findRouteMatch, findSingleMatch, parseSegment, processRouteMasks, processRouteTree };\n\n//# sourceMappingURL=new-process-route-tree.js.map","import { last } from \"./utils.js\";\nimport { parseSegment } from \"./new-process-route-tree.js\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/path.ts\n/** Join path segments, cleaning duplicate slashes between parts. */\nfunction joinPaths(paths) {\n\treturn cleanPath(paths.filter((val) => {\n\t\treturn val !== void 0;\n\t}).join(\"/\"));\n}\n/** Remove repeated slashes from a path string. */\nfunction cleanPath(path) {\n\treturn path.replace(/\\/{2,}/g, \"/\");\n}\n/** Trim leading slashes (except preserving root '/'). */\nfunction trimPathLeft(path) {\n\treturn path === \"/\" ? path : path.replace(/^\\/{1,}/, \"\");\n}\n/** Trim trailing slashes (except preserving root '/'). */\nfunction trimPathRight(path) {\n\tconst len = path.length;\n\treturn len > 1 && path[len - 1] === \"/\" ? path.replace(/\\/{1,}$/, \"\") : path;\n}\n/** Trim both leading and trailing slashes. */\nfunction trimPath(path) {\n\treturn trimPathRight(trimPathLeft(path));\n}\n/** Remove a trailing slash from value when appropriate for comparisons. */\nfunction removeTrailingSlash(value, basepath) {\n\tif (value?.endsWith(\"/\") && value !== \"/\" && value !== `${basepath}/`) return value.slice(0, -1);\n\treturn value;\n}\n/**\n* Compare two pathnames for exact equality after normalizing trailing slashes\n* relative to the provided `basepath`.\n*/\nfunction exactPathTest(pathName1, pathName2, basepath) {\n\treturn removeTrailingSlash(pathName1, basepath) === removeTrailingSlash(pathName2, basepath);\n}\n/**\n* Resolve a destination path against a base, honoring trailing-slash policy\n* and supporting relative segments (`.`/`..`) and absolute `to` values.\n*/\nfunction resolvePath({ base, to, trailingSlash = \"never\", cache }) {\n\tconst isAbsolute = to.startsWith(\"/\");\n\tconst isBase = !isAbsolute && to === \".\";\n\tlet key;\n\tif (cache) {\n\t\tkey = isAbsolute ? to : isBase ? base : base + \"\\0\" + to;\n\t\tconst cached = cache.get(key);\n\t\tif (cached) return cached;\n\t}\n\tlet baseSegments;\n\tif (isBase) baseSegments = base.split(\"/\");\n\telse if (isAbsolute) baseSegments = to.split(\"/\");\n\telse {\n\t\tbaseSegments = base.split(\"/\");\n\t\twhile (baseSegments.length > 1 && last(baseSegments) === \"\") baseSegments.pop();\n\t\tconst toSegments = to.split(\"/\");\n\t\tfor (let index = 0, length = toSegments.length; index < length; index++) {\n\t\t\tconst value = toSegments[index];\n\t\t\tif (value === \"\") {\n\t\t\t\tif (!index) baseSegments = [value];\n\t\t\t\telse if (index === length - 1) baseSegments.push(value);\n\t\t\t} else if (value === \"..\") baseSegments.pop();\n\t\t\telse if (value === \".\") {} else baseSegments.push(value);\n\t\t}\n\t}\n\tif (baseSegments.length > 1) {\n\t\tif (last(baseSegments) === \"\") {\n\t\t\tif (trailingSlash === \"never\") baseSegments.pop();\n\t\t} else if (trailingSlash === \"always\") baseSegments.push(\"\");\n\t}\n\tconst result = cleanPath(baseSegments.join(\"/\")) || \"/\";\n\tif (key && cache) cache.set(key, result);\n\treturn result;\n}\n/**\n* Create a pre-compiled decode config from allowed characters.\n* This should be called once at router initialization.\n*/\nfunction compileDecodeCharMap(pathParamsAllowedCharacters) {\n\tconst charMap = new Map(pathParamsAllowedCharacters.map((char) => [encodeURIComponent(char), char]));\n\tconst pattern = Array.from(charMap.keys()).map((key) => key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\"|\");\n\tconst regex = new RegExp(pattern, \"g\");\n\treturn (encoded) => encoded.replace(regex, (match) => charMap.get(match) ?? match);\n}\nfunction encodeParam(key, params, decoder) {\n\tconst value = params[key];\n\tif (typeof value !== \"string\") return value;\n\tif (key === \"_splat\") {\n\t\tif (/^[a-zA-Z0-9\\-._~!/]*$/.test(value)) return value;\n\t\treturn value.split(\"/\").map((segment) => encodePathParam(segment, decoder)).join(\"/\");\n\t} else return encodePathParam(value, decoder);\n}\n/**\n* Interpolate params and wildcards into a route path template.\n*\n* - Encodes params safely (configurable allowed characters)\n* - Supports `{-$optional}` segments, `{prefix{$id}suffix}` and `{$}` wildcards\n*/\nfunction interpolatePath({ path, params, decoder, ...rest }) {\n\tlet isMissingParams = false;\n\tconst usedParams = Object.create(null);\n\tif (!path || path === \"/\") return {\n\t\tinterpolatedPath: \"/\",\n\t\tusedParams,\n\t\tisMissingParams\n\t};\n\tif (!path.includes(\"$\")) return {\n\t\tinterpolatedPath: path,\n\t\tusedParams,\n\t\tisMissingParams\n\t};\n\tif (isServer ?? rest.server) {\n\t\tif (path.indexOf(\"{\") === -1) {\n\t\t\tconst length = path.length;\n\t\t\tlet cursor = 0;\n\t\t\tlet joined = \"\";\n\t\t\twhile (cursor < length) {\n\t\t\t\twhile (cursor < length && path.charCodeAt(cursor) === 47) cursor++;\n\t\t\t\tif (cursor >= length) break;\n\t\t\t\tconst start = cursor;\n\t\t\t\tlet end = path.indexOf(\"/\", cursor);\n\t\t\t\tif (end === -1) end = length;\n\t\t\t\tcursor = end;\n\t\t\t\tconst part = path.substring(start, end);\n\t\t\t\tif (!part) continue;\n\t\t\t\tif (part.charCodeAt(0) === 36) if (part.length === 1) {\n\t\t\t\t\tconst splat = params._splat;\n\t\t\t\t\tusedParams._splat = splat;\n\t\t\t\t\tusedParams[\"*\"] = splat;\n\t\t\t\t\tif (!splat) {\n\t\t\t\t\t\tisMissingParams = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst value = encodeParam(\"_splat\", params, decoder);\n\t\t\t\t\tjoined += \"/\" + value;\n\t\t\t\t} else {\n\t\t\t\t\tconst key = part.substring(1);\n\t\t\t\t\tif (!isMissingParams && !(key in params)) isMissingParams = true;\n\t\t\t\t\tusedParams[key] = params[key];\n\t\t\t\t\tconst value = encodeParam(key, params, decoder) ?? \"undefined\";\n\t\t\t\t\tjoined += \"/\" + value;\n\t\t\t\t}\n\t\t\t\telse joined += \"/\" + part;\n\t\t\t}\n\t\t\tif (path.endsWith(\"/\")) joined += \"/\";\n\t\t\treturn {\n\t\t\t\tusedParams,\n\t\t\t\tinterpolatedPath: joined || \"/\",\n\t\t\t\tisMissingParams\n\t\t\t};\n\t\t}\n\t}\n\tconst length = path.length;\n\tlet cursor = 0;\n\tlet segment;\n\tlet joined = \"\";\n\twhile (cursor < length) {\n\t\tconst start = cursor;\n\t\tsegment = parseSegment(path, start, segment);\n\t\tconst end = segment[5];\n\t\tcursor = end + 1;\n\t\tif (start === end) continue;\n\t\tconst kind = segment[0];\n\t\tif (kind === 0) {\n\t\t\tjoined += \"/\" + path.substring(start, end);\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 2) {\n\t\t\tconst splat = params._splat;\n\t\t\tusedParams._splat = splat;\n\t\t\tusedParams[\"*\"] = splat;\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tif (!splat) {\n\t\t\t\tisMissingParams = true;\n\t\t\t\tif (prefix || suffix) joined += \"/\" + prefix + suffix;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst value = encodeParam(\"_splat\", params, decoder);\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 1) {\n\t\t\tconst key = path.substring(segment[2], segment[3]);\n\t\t\tif (!isMissingParams && !(key in params)) isMissingParams = true;\n\t\t\tusedParams[key] = params[key];\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tconst value = encodeParam(key, params, decoder) ?? \"undefined\";\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 3) {\n\t\t\tconst key = path.substring(segment[2], segment[3]);\n\t\t\tconst valueRaw = params[key];\n\t\t\tif (valueRaw == null) continue;\n\t\t\tusedParams[key] = valueRaw;\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tconst value = encodeParam(key, params, decoder) ?? \"\";\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t}\n\tif (path.endsWith(\"/\")) joined += \"/\";\n\treturn {\n\t\tusedParams,\n\t\tinterpolatedPath: joined || \"/\",\n\t\tisMissingParams\n\t};\n}\nfunction encodePathParam(value, decoder) {\n\tconst encoded = encodeURIComponent(value);\n\treturn decoder?.(encoded) ?? encoded;\n}\n//#endregion\nexport { cleanPath, compileDecodeCharMap, exactPathTest, interpolatePath, joinPaths, removeTrailingSlash, resolvePath, trimPath, trimPathLeft, trimPathRight };\n\n//# sourceMappingURL=path.js.map","//#region src/not-found.ts\n/**\n* Create a not-found error object recognized by TanStack Router.\n*\n* Throw this from loaders/actions to trigger the nearest `notFoundComponent`.\n* Use `routeId` to target a specific route's not-found boundary. If `throw`\n* is true, the error is thrown instead of returned.\n*\n* @param options Optional settings including `routeId`, `headers`, and `throw`.\n* @returns A not-found error object that can be thrown or returned.\n* @link https://tanstack.com/router/latest/docs/router/framework/react/api/router/notFoundFunction\n*/\nfunction notFound(options = {}) {\n\toptions.isNotFound = true;\n\tif (options.throw) throw options;\n\treturn options;\n}\n/** Determine if a value is a TanStack Router not-found error. */\nfunction isNotFound(obj) {\n\treturn obj?.isNotFound === true;\n}\n//#endregion\nexport { isNotFound, notFound };\n\n//# sourceMappingURL=not-found.js.map","//#region src/qss.ts\n/**\n* Program is a reimplementation of the `qss` package:\n* Copyright (c) Luke Edwards luke.edwards05@gmail.com, MIT License\n* https://github.com/lukeed/qss/blob/master/license.md\n*\n* This reimplementation uses modern browser APIs\n* (namely URLSearchParams) and TypeScript while still\n* maintaining the original functionality and interface.\n*\n* Update: this implementation has also been mangled to\n* fit exactly our use-case (single value per key in encoding).\n*/\n/**\n* Encodes an object into a query string.\n* @param obj - The object to encode into a query string.\n* @param stringify - An optional custom stringify function.\n* @returns The encoded query string.\n* @example\n* ```\n* // Example input: encode({ token: 'foo', key: 'value' })\n* // Expected output: \"token=foo&key=value\"\n* ```\n*/\nfunction encode(obj, stringify = String) {\n\tconst result = new URLSearchParams();\n\tfor (const key in obj) {\n\t\tconst val = obj[key];\n\t\tif (val !== void 0) result.set(key, stringify(val));\n\t}\n\treturn result.toString();\n}\n/**\n* Converts a string value to its appropriate type (string, number, boolean).\n* @param mix - The string value to convert.\n* @returns The converted value.\n* @example\n* // Example input: toValue(\"123\")\n* // Expected output: 123\n*/\nfunction toValue(str) {\n\tif (!str) return \"\";\n\tif (str === \"false\") return false;\n\tif (str === \"true\") return true;\n\treturn +str * 0 === 0 && +str + \"\" === str ? +str : str;\n}\n/**\n* Decodes a query string into an object.\n* @param str - The query string to decode.\n* @returns The decoded key-value pairs in an object format.\n* @example\n* // Example input: decode(\"token=foo&key=value\")\n* // Expected output: { \"token\": \"foo\", \"key\": \"value\" }\n*/\nfunction decode(str) {\n\tconst searchParams = new URLSearchParams(str);\n\tconst result = Object.create(null);\n\tfor (const [key, value] of searchParams.entries()) {\n\t\tconst previousValue = result[key];\n\t\tif (previousValue == null) result[key] = toValue(value);\n\t\telse if (Array.isArray(previousValue)) previousValue.push(toValue(value));\n\t\telse result[key] = [previousValue, toValue(value)];\n\t}\n\treturn result;\n}\n//#endregion\nexport { decode, encode };\n\n//# sourceMappingURL=qss.js.map","import { decode, encode } from \"./qss.js\";\n//#region src/searchParams.ts\n/** Default `parseSearch` that strips leading '?' and JSON-parses values. */\nconst defaultParseSearch = parseSearchWith(JSON.parse);\n/** Default `stringifySearch` using JSON.stringify for complex values. */\nconst defaultStringifySearch = stringifySearchWith(JSON.stringify, JSON.parse);\n/**\n* Build a `parseSearch` function using a provided JSON-like parser.\n*\n* The returned function strips a leading `?`, decodes values, and attempts to\n* JSON-parse string values using the given `parser`.\n*\n* @param parser Function to parse a string value (e.g. `JSON.parse`).\n* @returns A `parseSearch` function compatible with `Router` options.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-search-param-serialization\n*/\nfunction parseSearchWith(parser) {\n\treturn (searchStr) => {\n\t\tif (searchStr[0] === \"?\") searchStr = searchStr.substring(1);\n\t\tconst query = decode(searchStr);\n\t\tfor (const key in query) {\n\t\t\tconst value = query[key];\n\t\t\tif (typeof value === \"string\") try {\n\t\t\t\tquery[key] = parser(value);\n\t\t\t} catch (_err) {}\n\t\t}\n\t\treturn query;\n\t};\n}\n/**\n* Build a `stringifySearch` function using a provided serializer.\n*\n* Non-primitive values are serialized with `stringify`. If a `parser` is\n* supplied, string values that are parseable are re-serialized to ensure\n* symmetry with `parseSearch`.\n*\n* @param stringify Function to serialize a value (e.g. `JSON.stringify`).\n* @param parser Optional parser to detect parseable strings.\n* @returns A `stringifySearch` function compatible with `Router` options.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-search-param-serialization\n*/\nfunction stringifySearchWith(stringify, parser) {\n\tconst hasParser = typeof parser === \"function\";\n\tfunction stringifyValue(val) {\n\t\tif (typeof val === \"object\" && val !== null) try {\n\t\t\treturn stringify(val);\n\t\t} catch (_err) {}\n\t\telse if (hasParser && typeof val === \"string\") try {\n\t\t\tparser(val);\n\t\t\treturn stringify(val);\n\t\t} catch (_err) {}\n\t\treturn val;\n\t}\n\treturn (search) => {\n\t\tconst searchStr = encode(search, stringifyValue);\n\t\treturn searchStr ? `?${searchStr}` : \"\";\n\t};\n}\n//#endregion\nexport { defaultParseSearch, defaultStringifySearch, parseSearchWith, stringifySearchWith };\n\n//# sourceMappingURL=searchParams.js.map","//#region src/root.ts\n/** Stable identifier used for the root route in a route tree. */\nconst rootRouteId = \"__root__\";\n//#endregion\nexport { rootRouteId };\n\n//# sourceMappingURL=root.js.map","//#region src/redirect.ts\n/**\n* Create a redirect Response understood by TanStack Router.\n*\n* Use from route `loader`/`beforeLoad` or server functions to trigger a\n* navigation. If `throw: true` is set, the redirect is thrown instead of\n* returned. When an absolute `href` is supplied and `reloadDocument` is not\n* set, a full-document navigation is inferred.\n*\n* @param opts Options for the redirect. Common fields:\n* - `href`: absolute URL for external redirects; infers `reloadDocument`.\n* - `statusCode`: HTTP status code to use (defaults to 307).\n* - `headers`: additional headers to include on the Response.\n* - Standard navigation options like `to`, `params`, `search`, `replace`,\n* and `reloadDocument` for internal redirects.\n* @returns A Response augmented with router navigation options.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/redirectFunction\n*/\nfunction redirect(opts) {\n\topts.statusCode = opts.statusCode || opts.code || 307;\n\tif (!opts._builtLocation && !opts.reloadDocument && typeof opts.href === \"string\") try {\n\t\tnew URL(opts.href);\n\t\topts.reloadDocument = true;\n\t} catch {}\n\tconst headers = new Headers(opts.headers);\n\tif (opts.href && headers.get(\"Location\") === null) headers.set(\"Location\", opts.href);\n\tconst response = new Response(null, {\n\t\tstatus: opts.statusCode,\n\t\theaders\n\t});\n\tresponse.options = opts;\n\tif (opts.throw) throw response;\n\treturn response;\n}\n/** Check whether a value is a TanStack Router redirect Response. */\n/** Check whether a value is a TanStack Router redirect Response. */\nfunction isRedirect(obj) {\n\treturn obj instanceof Response && !!obj.options;\n}\n/** True if value is a redirect with a resolved `href` location. */\n/** True if value is a redirect with a resolved `href` location. */\nfunction isResolvedRedirect(obj) {\n\treturn isRedirect(obj) && !!obj.options.href;\n}\n/** Parse a serialized redirect object back into a redirect Response. */\n/** Parse a serialized redirect object back into a redirect Response. */\nfunction parseRedirect(obj) {\n\tif (obj !== null && typeof obj === \"object\" && obj.isSerializedRedirect) return redirect(obj);\n}\n//#endregion\nexport { isRedirect, isResolvedRedirect, parseRedirect, redirect };\n\n//# sourceMappingURL=redirect.js.map","import { createControlledPromise, isPromise } from \"./utils.js\";\nimport { invariant } from \"./invariant.js\";\nimport { isNotFound } from \"./not-found.js\";\nimport { rootRouteId } from \"./root.js\";\nimport { isRedirect } from \"./redirect.js\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/load-matches.ts\nconst triggerOnReady = (inner) => {\n\tif (!inner.rendered) {\n\t\tinner.rendered = true;\n\t\treturn inner.onReady?.();\n\t}\n};\nconst hasForcePendingActiveMatch = (router) => {\n\treturn router.stores.matchesId.get().some((matchId) => {\n\t\treturn router.stores.matchStores.get(matchId)?.get()._forcePending;\n\t});\n};\nconst resolvePreload = (inner, matchId) => {\n\treturn !!(inner.preload && !inner.router.stores.matchStores.has(matchId));\n};\n/**\n* Builds the accumulated context from router options and all matches up to (and optionally including) the given index.\n* Merges __routeContext and __beforeLoadContext from each match.\n*/\nconst buildMatchContext = (inner, index, includeCurrentMatch = true) => {\n\tconst context = { ...inner.router.options.context ?? {} };\n\tconst end = includeCurrentMatch ? index : index - 1;\n\tfor (let i = 0; i <= end; i++) {\n\t\tconst innerMatch = inner.matches[i];\n\t\tif (!innerMatch) continue;\n\t\tconst m = inner.router.getMatch(innerMatch.id);\n\t\tif (!m) continue;\n\t\tObject.assign(context, m.__routeContext, m.__beforeLoadContext);\n\t}\n\treturn context;\n};\nconst getNotFoundBoundaryIndex = (inner, err) => {\n\tif (!inner.matches.length) return;\n\tconst requestedRouteId = err.routeId;\n\tconst matchedRootIndex = inner.matches.findIndex((m) => m.routeId === inner.router.routeTree.id);\n\tconst rootIndex = matchedRootIndex >= 0 ? matchedRootIndex : 0;\n\tlet startIndex = requestedRouteId ? inner.matches.findIndex((match) => match.routeId === requestedRouteId) : inner.firstBadMatchIndex ?? inner.matches.length - 1;\n\tif (startIndex < 0) startIndex = rootIndex;\n\tfor (let i = startIndex; i >= 0; i--) {\n\t\tconst match = inner.matches[i];\n\t\tif (inner.router.looseRoutesById[match.routeId].options.notFoundComponent) return i;\n\t}\n\treturn requestedRouteId ? startIndex : rootIndex;\n};\nconst handleRedirectAndNotFound = (inner, match, err) => {\n\tif (!isRedirect(err) && !isNotFound(err)) return;\n\tif (isRedirect(err) && err.redirectHandled && !err.options.reloadDocument) throw err;\n\tif (match) {\n\t\tmatch._nonReactive.beforeLoadPromise?.resolve();\n\t\tmatch._nonReactive.loaderPromise?.resolve();\n\t\tmatch._nonReactive.beforeLoadPromise = void 0;\n\t\tmatch._nonReactive.loaderPromise = void 0;\n\t\tmatch._nonReactive.error = err;\n\t\tinner.updateMatch(match.id, (prev) => ({\n\t\t\t...prev,\n\t\t\tstatus: isRedirect(err) ? \"redirected\" : isNotFound(err) ? \"notFound\" : prev.status === \"pending\" ? \"success\" : prev.status,\n\t\t\tcontext: buildMatchContext(inner, match.index),\n\t\t\tisFetching: false,\n\t\t\terror: err\n\t\t}));\n\t\tif (isNotFound(err) && !err.routeId) err.routeId = match.routeId;\n\t\tmatch._nonReactive.loadPromise?.resolve();\n\t}\n\tif (isRedirect(err)) {\n\t\tinner.rendered = true;\n\t\terr.options._fromLocation = inner.location;\n\t\terr.redirectHandled = true;\n\t\terr = inner.router.resolveRedirect(err);\n\t}\n\tthrow err;\n};\nconst shouldSkipLoader = (inner, matchId) => {\n\tconst match = inner.router.getMatch(matchId);\n\tif (!match) return true;\n\tif (!(isServer ?? inner.router.isServer) && match._nonReactive.dehydrated) return true;\n\tif ((isServer ?? inner.router.isServer) && match.ssr === false) return true;\n\treturn false;\n};\nconst syncMatchContext = (inner, matchId, index) => {\n\tconst nextContext = buildMatchContext(inner, index);\n\tinner.updateMatch(matchId, (prev) => {\n\t\treturn {\n\t\t\t...prev,\n\t\t\tcontext: nextContext\n\t\t};\n\t});\n};\nconst handleSerialError = (inner, index, err) => {\n\tconst { id: matchId, routeId } = inner.matches[index];\n\tconst route = inner.router.looseRoutesById[routeId];\n\tif (err instanceof Promise) throw err;\n\tinner.firstBadMatchIndex ??= index;\n\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), err);\n\ttry {\n\t\troute.options.onError?.(err);\n\t} catch (errorHandlerErr) {\n\t\terr = errorHandlerErr;\n\t\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), err);\n\t}\n\tinner.updateMatch(matchId, (prev) => {\n\t\tprev._nonReactive.beforeLoadPromise?.resolve();\n\t\tprev._nonReactive.beforeLoadPromise = void 0;\n\t\tprev._nonReactive.loadPromise?.resolve();\n\t\treturn {\n\t\t\t...prev,\n\t\t\terror: err,\n\t\t\tstatus: \"error\",\n\t\t\tisFetching: false,\n\t\t\tupdatedAt: Date.now(),\n\t\t\tabortController: new AbortController()\n\t\t};\n\t});\n\tif (!inner.preload && !isRedirect(err) && !isNotFound(err)) inner.serialError ??= err;\n};\nconst isBeforeLoadSsr = (inner, matchId, index, route) => {\n\tconst existingMatch = inner.router.getMatch(matchId);\n\tconst parentMatchId = inner.matches[index - 1]?.id;\n\tconst parentMatch = parentMatchId ? inner.router.getMatch(parentMatchId) : void 0;\n\tif (inner.router.isShell()) {\n\t\texistingMatch.ssr = route.id === rootRouteId;\n\t\treturn;\n\t}\n\tif (parentMatch?.ssr === false) {\n\t\texistingMatch.ssr = false;\n\t\treturn;\n\t}\n\tconst parentOverride = (tempSsr) => {\n\t\tif (tempSsr === true && parentMatch?.ssr === \"data-only\") return \"data-only\";\n\t\treturn tempSsr;\n\t};\n\tconst defaultSsr = inner.router.options.defaultSsr ?? true;\n\tif (route.options.ssr === void 0) {\n\t\texistingMatch.ssr = parentOverride(defaultSsr);\n\t\treturn;\n\t}\n\tif (typeof route.options.ssr !== \"function\") {\n\t\texistingMatch.ssr = parentOverride(route.options.ssr);\n\t\treturn;\n\t}\n\tconst { search, params } = existingMatch;\n\tconst ssrFnContext = {\n\t\tsearch: makeMaybe(search, existingMatch.searchError),\n\t\tparams: makeMaybe(params, existingMatch.paramsError),\n\t\tlocation: inner.location,\n\t\tmatches: inner.matches.map((match) => ({\n\t\t\tindex: match.index,\n\t\t\tpathname: match.pathname,\n\t\t\tfullPath: match.fullPath,\n\t\t\tstaticData: match.staticData,\n\t\t\tid: match.id,\n\t\t\trouteId: match.routeId,\n\t\t\tsearch: makeMaybe(match.search, match.searchError),\n\t\t\tparams: makeMaybe(match.params, match.paramsError),\n\t\t\tssr: match.ssr\n\t\t}))\n\t};\n\tconst tempSsr = route.options.ssr(ssrFnContext);\n\tif (isPromise(tempSsr)) return tempSsr.then((ssr) => {\n\t\texistingMatch.ssr = parentOverride(ssr ?? defaultSsr);\n\t});\n\texistingMatch.ssr = parentOverride(tempSsr ?? defaultSsr);\n};\nconst setupPendingTimeout = (inner, matchId, route, match) => {\n\tif (match._nonReactive.pendingTimeout !== void 0) return;\n\tconst pendingMs = route.options.pendingMs ?? inner.router.options.defaultPendingMs;\n\tif (!!(inner.onReady && !(isServer ?? inner.router.isServer) && !resolvePreload(inner, matchId) && (route.options.loader || route.options.beforeLoad || routeNeedsPreload(route)) && typeof pendingMs === \"number\" && pendingMs !== Infinity && (route.options.pendingComponent ?? inner.router.options?.defaultPendingComponent))) {\n\t\tconst pendingTimeout = setTimeout(() => {\n\t\t\ttriggerOnReady(inner);\n\t\t}, pendingMs);\n\t\tmatch._nonReactive.pendingTimeout = pendingTimeout;\n\t}\n};\nconst preBeforeLoadSetup = (inner, matchId, route) => {\n\tconst existingMatch = inner.router.getMatch(matchId);\n\tif (!existingMatch._nonReactive.beforeLoadPromise && !existingMatch._nonReactive.loaderPromise) return;\n\tsetupPendingTimeout(inner, matchId, route, existingMatch);\n\tconst then = () => {\n\t\tconst match = inner.router.getMatch(matchId);\n\t\tif (match.preload && (match.status === \"redirected\" || match.status === \"notFound\")) handleRedirectAndNotFound(inner, match, match.error);\n\t};\n\treturn existingMatch._nonReactive.beforeLoadPromise ? existingMatch._nonReactive.beforeLoadPromise.then(then) : then();\n};\nconst executeBeforeLoad = (inner, matchId, index, route) => {\n\tconst match = inner.router.getMatch(matchId);\n\tlet prevLoadPromise = match._nonReactive.loadPromise;\n\tmatch._nonReactive.loadPromise = createControlledPromise(() => {\n\t\tprevLoadPromise?.resolve();\n\t\tprevLoadPromise = void 0;\n\t});\n\tconst { paramsError, searchError } = match;\n\tif (paramsError) handleSerialError(inner, index, paramsError);\n\tif (searchError) handleSerialError(inner, index, searchError);\n\tsetupPendingTimeout(inner, matchId, route, match);\n\tconst abortController = new AbortController();\n\tlet isPending = false;\n\tconst pending = () => {\n\t\tif (isPending) return;\n\t\tisPending = true;\n\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t...prev,\n\t\t\tisFetching: \"beforeLoad\",\n\t\t\tfetchCount: prev.fetchCount + 1,\n\t\t\tabortController\n\t\t}));\n\t};\n\tconst resolve = () => {\n\t\tmatch._nonReactive.beforeLoadPromise?.resolve();\n\t\tmatch._nonReactive.beforeLoadPromise = void 0;\n\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t...prev,\n\t\t\tisFetching: false\n\t\t}));\n\t};\n\tif (!route.options.beforeLoad) {\n\t\tinner.router.batch(() => {\n\t\t\tpending();\n\t\t\tresolve();\n\t\t});\n\t\treturn;\n\t}\n\tmatch._nonReactive.beforeLoadPromise = createControlledPromise();\n\tconst context = {\n\t\t...buildMatchContext(inner, index, false),\n\t\t...match.__routeContext\n\t};\n\tconst { search, params, cause } = match;\n\tconst preload = resolvePreload(inner, matchId);\n\tconst beforeLoadFnContext = {\n\t\tsearch,\n\t\tabortController,\n\t\tparams,\n\t\tpreload,\n\t\tcontext,\n\t\tlocation: inner.location,\n\t\tnavigate: (opts) => inner.router.navigate({\n\t\t\t...opts,\n\t\t\t_fromLocation: inner.location\n\t\t}),\n\t\tbuildLocation: inner.router.buildLocation,\n\t\tcause: preload ? \"preload\" : cause,\n\t\tmatches: inner.matches,\n\t\trouteId: route.id,\n\t\t...inner.router.options.additionalContext\n\t};\n\tconst updateContext = (beforeLoadContext) => {\n\t\tif (beforeLoadContext === void 0) {\n\t\t\tinner.router.batch(() => {\n\t\t\t\tpending();\n\t\t\t\tresolve();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (isRedirect(beforeLoadContext) || isNotFound(beforeLoadContext)) {\n\t\t\tpending();\n\t\t\thandleSerialError(inner, index, beforeLoadContext);\n\t\t}\n\t\tinner.router.batch(() => {\n\t\t\tpending();\n\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\t__beforeLoadContext: beforeLoadContext\n\t\t\t}));\n\t\t\tresolve();\n\t\t});\n\t};\n\tlet beforeLoadContext;\n\ttry {\n\t\tbeforeLoadContext = route.options.beforeLoad(beforeLoadFnContext);\n\t\tif (isPromise(beforeLoadContext)) {\n\t\t\tpending();\n\t\t\treturn beforeLoadContext.catch((err) => {\n\t\t\t\thandleSerialError(inner, index, err);\n\t\t\t}).then(updateContext);\n\t\t}\n\t} catch (err) {\n\t\tpending();\n\t\thandleSerialError(inner, index, err);\n\t}\n\tupdateContext(beforeLoadContext);\n};\nconst handleBeforeLoad = (inner, index) => {\n\tconst { id: matchId, routeId } = inner.matches[index];\n\tconst route = inner.router.looseRoutesById[routeId];\n\tconst serverSsr = () => {\n\t\tif (isServer ?? inner.router.isServer) {\n\t\t\tconst maybePromise = isBeforeLoadSsr(inner, matchId, index, route);\n\t\t\tif (isPromise(maybePromise)) return maybePromise.then(queueExecution);\n\t\t}\n\t\treturn queueExecution();\n\t};\n\tconst execute = () => executeBeforeLoad(inner, matchId, index, route);\n\tconst queueExecution = () => {\n\t\tif (shouldSkipLoader(inner, matchId)) return;\n\t\tconst result = preBeforeLoadSetup(inner, matchId, route);\n\t\treturn isPromise(result) ? result.then(execute) : execute();\n\t};\n\treturn serverSsr();\n};\nconst executeHead = (inner, matchId, route) => {\n\tconst match = inner.router.getMatch(matchId);\n\tif (!match) return;\n\tif (!route.options.head && !route.options.scripts && !route.options.headers) return;\n\tconst assetContext = {\n\t\tssr: inner.router.options.ssr,\n\t\tmatches: inner.matches,\n\t\tmatch,\n\t\tparams: match.params,\n\t\tloaderData: match.loaderData\n\t};\n\treturn Promise.all([\n\t\troute.options.head?.(assetContext),\n\t\troute.options.scripts?.(assetContext),\n\t\troute.options.headers?.(assetContext)\n\t]).then(([headFnContent, scripts, headers]) => {\n\t\treturn {\n\t\t\tmeta: headFnContent?.meta,\n\t\t\tlinks: headFnContent?.links,\n\t\t\theadScripts: headFnContent?.scripts,\n\t\t\theaders,\n\t\t\tscripts,\n\t\t\tstyles: headFnContent?.styles\n\t\t};\n\t});\n};\nconst getLoaderContext = (inner, matchPromises, matchId, index, route) => {\n\tconst parentMatchPromise = matchPromises[index - 1];\n\tconst { params, loaderDeps, abortController, cause } = inner.router.getMatch(matchId);\n\tconst context = buildMatchContext(inner, index);\n\tconst preload = resolvePreload(inner, matchId);\n\treturn {\n\t\tparams,\n\t\tdeps: loaderDeps,\n\t\tpreload: !!preload,\n\t\tparentMatchPromise,\n\t\tabortController,\n\t\tcontext,\n\t\tlocation: inner.location,\n\t\tnavigate: (opts) => inner.router.navigate({\n\t\t\t...opts,\n\t\t\t_fromLocation: inner.location\n\t\t}),\n\t\tcause: preload ? \"preload\" : cause,\n\t\troute,\n\t\t...inner.router.options.additionalContext\n\t};\n};\nconst runLoader = async (inner, matchPromises, matchId, index, route) => {\n\ttry {\n\t\tconst match = inner.router.getMatch(matchId);\n\t\ttry {\n\t\t\tif (!(isServer ?? inner.router.isServer) || match.ssr === true) loadRouteChunk(route);\n\t\t\tconst routeLoader = route.options.loader;\n\t\t\tconst loader = typeof routeLoader === \"function\" ? routeLoader : routeLoader?.handler;\n\t\t\tconst loaderResult = loader?.(getLoaderContext(inner, matchPromises, matchId, index, route));\n\t\t\tconst loaderResultIsPromise = !!loader && isPromise(loaderResult);\n\t\t\tif (!!(loaderResultIsPromise || route._lazyPromise || route._componentsPromise || route.options.head || route.options.scripts || route.options.headers || match._nonReactive.minPendingPromise)) inner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tisFetching: \"loader\"\n\t\t\t}));\n\t\t\tif (loader) {\n\t\t\t\tconst loaderData = loaderResultIsPromise ? await loaderResult : loaderResult;\n\t\t\t\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), loaderData);\n\t\t\t\tif (loaderData !== void 0) inner.updateMatch(matchId, (prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tloaderData\n\t\t\t\t}));\n\t\t\t}\n\t\t\tif (route._lazyPromise) await route._lazyPromise;\n\t\t\tconst pendingPromise = match._nonReactive.minPendingPromise;\n\t\t\tif (pendingPromise) await pendingPromise;\n\t\t\tif (route._componentsPromise) await route._componentsPromise;\n\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\terror: void 0,\n\t\t\t\tcontext: buildMatchContext(inner, index),\n\t\t\t\tstatus: \"success\",\n\t\t\t\tisFetching: false,\n\t\t\t\tupdatedAt: Date.now()\n\t\t\t}));\n\t\t} catch (e) {\n\t\t\tlet error = e;\n\t\t\tif (error?.name === \"AbortError\") {\n\t\t\t\tif (match.abortController.signal.aborted) {\n\t\t\t\t\tmatch._nonReactive.loaderPromise?.resolve();\n\t\t\t\t\tmatch._nonReactive.loaderPromise = void 0;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tstatus: prev.status === \"pending\" ? \"success\" : prev.status,\n\t\t\t\t\tisFetching: false,\n\t\t\t\t\tcontext: buildMatchContext(inner, index)\n\t\t\t\t}));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst pendingPromise = match._nonReactive.minPendingPromise;\n\t\t\tif (pendingPromise) await pendingPromise;\n\t\t\tif (isNotFound(e)) await route.options.notFoundComponent?.preload?.();\n\t\t\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), e);\n\t\t\ttry {\n\t\t\t\troute.options.onError?.(e);\n\t\t\t} catch (onErrorError) {\n\t\t\t\terror = onErrorError;\n\t\t\t\thandleRedirectAndNotFound(inner, inner.router.getMatch(matchId), onErrorError);\n\t\t\t}\n\t\t\tif (!isRedirect(error) && !isNotFound(error)) await loadRouteChunk(route, [\"errorComponent\"]);\n\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\terror,\n\t\t\t\tcontext: buildMatchContext(inner, index),\n\t\t\t\tstatus: \"error\",\n\t\t\t\tisFetching: false\n\t\t\t}));\n\t\t}\n\t} catch (err) {\n\t\tconst match = inner.router.getMatch(matchId);\n\t\tif (match) match._nonReactive.loaderPromise = void 0;\n\t\thandleRedirectAndNotFound(inner, match, err);\n\t}\n};\nconst loadRouteMatch = async (inner, matchPromises, index) => {\n\tasync function handleLoader(preload, prevMatch, previousRouteMatchId, match, route) {\n\t\tconst age = Date.now() - prevMatch.updatedAt;\n\t\tconst staleAge = preload ? route.options.preloadStaleTime ?? inner.router.options.defaultPreloadStaleTime ?? 3e4 : route.options.staleTime ?? inner.router.options.defaultStaleTime ?? 0;\n\t\tconst shouldReloadOption = route.options.shouldReload;\n\t\tconst shouldReload = typeof shouldReloadOption === \"function\" ? shouldReloadOption(getLoaderContext(inner, matchPromises, matchId, index, route)) : shouldReloadOption;\n\t\tconst { status, invalid } = match;\n\t\tconst staleMatchShouldReload = age >= staleAge && (!!inner.forceStaleReload || match.cause === \"enter\" || previousRouteMatchId !== void 0 && previousRouteMatchId !== match.id);\n\t\tloaderShouldRunAsync = status === \"success\" && (invalid || (shouldReload ?? staleMatchShouldReload));\n\t\tif (preload && route.options.preload === false) {} else if (loaderShouldRunAsync && !inner.sync && shouldReloadInBackground) {\n\t\t\tloaderIsRunningAsync = true;\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tawait runLoader(inner, matchPromises, matchId, index, route);\n\t\t\t\t\tconst match = inner.router.getMatch(matchId);\n\t\t\t\t\tmatch._nonReactive.loaderPromise?.resolve();\n\t\t\t\t\tmatch._nonReactive.loadPromise?.resolve();\n\t\t\t\t\tmatch._nonReactive.loaderPromise = void 0;\n\t\t\t\t\tmatch._nonReactive.loadPromise = void 0;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (isRedirect(err)) await inner.router.navigate(err.options);\n\t\t\t\t}\n\t\t\t})();\n\t\t} else if (status !== \"success\" || loaderShouldRunAsync) await runLoader(inner, matchPromises, matchId, index, route);\n\t\telse syncMatchContext(inner, matchId, index);\n\t}\n\tconst { id: matchId, routeId } = inner.matches[index];\n\tlet loaderShouldRunAsync = false;\n\tlet loaderIsRunningAsync = false;\n\tconst route = inner.router.looseRoutesById[routeId];\n\tconst routeLoader = route.options.loader;\n\tconst shouldReloadInBackground = ((typeof routeLoader === \"function\" ? void 0 : routeLoader?.staleReloadMode) ?? inner.router.options.defaultStaleReloadMode) !== \"blocking\";\n\tif (shouldSkipLoader(inner, matchId)) {\n\t\tif (!inner.router.getMatch(matchId)) return inner.matches[index];\n\t\tsyncMatchContext(inner, matchId, index);\n\t\tif (isServer ?? inner.router.isServer) return inner.router.getMatch(matchId);\n\t} else {\n\t\tconst prevMatch = inner.router.getMatch(matchId);\n\t\tconst activeIdAtIndex = inner.router.stores.matchesId.get()[index];\n\t\tconst previousRouteMatchId = (activeIdAtIndex && inner.router.stores.matchStores.get(activeIdAtIndex) || null)?.routeId === routeId ? activeIdAtIndex : inner.router.stores.matches.get().find((d) => d.routeId === routeId)?.id;\n\t\tconst preload = resolvePreload(inner, matchId);\n\t\tif (prevMatch._nonReactive.loaderPromise) {\n\t\t\tif (prevMatch.status === \"success\" && !inner.sync && !prevMatch.preload && shouldReloadInBackground) return prevMatch;\n\t\t\tawait prevMatch._nonReactive.loaderPromise;\n\t\t\tconst match = inner.router.getMatch(matchId);\n\t\t\tconst error = match._nonReactive.error || match.error;\n\t\t\tif (error) handleRedirectAndNotFound(inner, match, error);\n\t\t\tif (match.status === \"pending\") await handleLoader(preload, prevMatch, previousRouteMatchId, match, route);\n\t\t} else {\n\t\t\tconst nextPreload = preload && !inner.router.stores.matchStores.has(matchId);\n\t\t\tconst match = inner.router.getMatch(matchId);\n\t\t\tmatch._nonReactive.loaderPromise = createControlledPromise();\n\t\t\tif (nextPreload !== match.preload) inner.updateMatch(matchId, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tpreload: nextPreload\n\t\t\t}));\n\t\t\tawait handleLoader(preload, prevMatch, previousRouteMatchId, match, route);\n\t\t}\n\t}\n\tconst match = inner.router.getMatch(matchId);\n\tif (!loaderIsRunningAsync) {\n\t\tmatch._nonReactive.loaderPromise?.resolve();\n\t\tmatch._nonReactive.loadPromise?.resolve();\n\t\tmatch._nonReactive.loadPromise = void 0;\n\t}\n\tclearTimeout(match._nonReactive.pendingTimeout);\n\tmatch._nonReactive.pendingTimeout = void 0;\n\tif (!loaderIsRunningAsync) match._nonReactive.loaderPromise = void 0;\n\tmatch._nonReactive.dehydrated = void 0;\n\tconst nextIsFetching = loaderIsRunningAsync ? match.isFetching : false;\n\tif (nextIsFetching !== match.isFetching || match.invalid !== false) {\n\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t...prev,\n\t\t\tisFetching: nextIsFetching,\n\t\t\tinvalid: false\n\t\t}));\n\t\treturn inner.router.getMatch(matchId);\n\t} else return match;\n};\nasync function loadMatches(arg) {\n\tconst inner = arg;\n\tconst matchPromises = [];\n\tif (!(isServer ?? inner.router.isServer) && hasForcePendingActiveMatch(inner.router)) triggerOnReady(inner);\n\tlet beforeLoadNotFound;\n\tfor (let i = 0; i < inner.matches.length; i++) {\n\t\ttry {\n\t\t\tconst beforeLoad = handleBeforeLoad(inner, i);\n\t\t\tif (isPromise(beforeLoad)) await beforeLoad;\n\t\t} catch (err) {\n\t\t\tif (isRedirect(err)) throw err;\n\t\t\tif (isNotFound(err)) beforeLoadNotFound = err;\n\t\t\telse if (!inner.preload) throw err;\n\t\t\tbreak;\n\t\t}\n\t\tif (inner.serialError || inner.firstBadMatchIndex != null) break;\n\t}\n\tconst baseMaxIndexExclusive = inner.firstBadMatchIndex ?? inner.matches.length;\n\tconst boundaryIndex = beforeLoadNotFound && !inner.preload ? getNotFoundBoundaryIndex(inner, beforeLoadNotFound) : void 0;\n\tconst maxIndexExclusive = beforeLoadNotFound && inner.preload ? 0 : boundaryIndex !== void 0 ? Math.min(boundaryIndex + 1, baseMaxIndexExclusive) : baseMaxIndexExclusive;\n\tlet firstNotFound;\n\tlet firstUnhandledRejection;\n\tfor (let i = 0; i < maxIndexExclusive; i++) matchPromises.push(loadRouteMatch(inner, matchPromises, i));\n\ttry {\n\t\tawait Promise.all(matchPromises);\n\t} catch {\n\t\tconst settled = await Promise.allSettled(matchPromises);\n\t\tfor (const result of settled) {\n\t\t\tif (result.status !== \"rejected\") continue;\n\t\t\tconst reason = result.reason;\n\t\t\tif (isRedirect(reason)) throw reason;\n\t\t\tif (isNotFound(reason)) firstNotFound ??= reason;\n\t\t\telse firstUnhandledRejection ??= reason;\n\t\t}\n\t\tif (firstUnhandledRejection !== void 0) throw firstUnhandledRejection;\n\t}\n\tconst notFoundToThrow = firstNotFound ?? (beforeLoadNotFound && !inner.preload ? beforeLoadNotFound : void 0);\n\tlet headMaxIndex = inner.firstBadMatchIndex !== void 0 ? inner.firstBadMatchIndex : inner.matches.length - 1;\n\tif (!notFoundToThrow && beforeLoadNotFound && inner.preload) return inner.matches;\n\tif (notFoundToThrow) {\n\t\tconst renderedBoundaryIndex = getNotFoundBoundaryIndex(inner, notFoundToThrow);\n\t\tif (renderedBoundaryIndex === void 0) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Could not find match for notFound boundary\");\n\t\t\tinvariant();\n\t\t}\n\t\tconst boundaryMatch = inner.matches[renderedBoundaryIndex];\n\t\tconst boundaryRoute = inner.router.looseRoutesById[boundaryMatch.routeId];\n\t\tconst defaultNotFoundComponent = inner.router.options?.defaultNotFoundComponent;\n\t\tif (!boundaryRoute.options.notFoundComponent && defaultNotFoundComponent) boundaryRoute.options.notFoundComponent = defaultNotFoundComponent;\n\t\tnotFoundToThrow.routeId = boundaryMatch.routeId;\n\t\tconst boundaryIsRoot = boundaryMatch.routeId === inner.router.routeTree.id;\n\t\tinner.updateMatch(boundaryMatch.id, (prev) => ({\n\t\t\t...prev,\n\t\t\t...boundaryIsRoot ? {\n\t\t\t\tstatus: \"success\",\n\t\t\t\tglobalNotFound: true,\n\t\t\t\terror: void 0\n\t\t\t} : {\n\t\t\t\tstatus: \"notFound\",\n\t\t\t\terror: notFoundToThrow\n\t\t\t},\n\t\t\tisFetching: false\n\t\t}));\n\t\theadMaxIndex = renderedBoundaryIndex;\n\t\tawait loadRouteChunk(boundaryRoute, [\"notFoundComponent\"]);\n\t} else if (!inner.preload) {\n\t\tconst rootMatch = inner.matches[0];\n\t\tif (!rootMatch.globalNotFound) {\n\t\t\tif (inner.router.getMatch(rootMatch.id)?.globalNotFound) inner.updateMatch(rootMatch.id, (prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tglobalNotFound: false,\n\t\t\t\terror: void 0\n\t\t\t}));\n\t\t}\n\t}\n\tif (inner.serialError && inner.firstBadMatchIndex !== void 0) {\n\t\tconst errorRoute = inner.router.looseRoutesById[inner.matches[inner.firstBadMatchIndex].routeId];\n\t\tawait loadRouteChunk(errorRoute, [\"errorComponent\"]);\n\t}\n\tfor (let i = 0; i <= headMaxIndex; i++) {\n\t\tconst { id: matchId, routeId } = inner.matches[i];\n\t\tconst route = inner.router.looseRoutesById[routeId];\n\t\ttry {\n\t\t\tconst headResult = executeHead(inner, matchId, route);\n\t\t\tif (headResult) {\n\t\t\t\tconst head = await headResult;\n\t\t\t\tinner.updateMatch(matchId, (prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...head\n\t\t\t\t}));\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(`Error executing head for route ${routeId}:`, err);\n\t\t}\n\t}\n\tconst readyPromise = triggerOnReady(inner);\n\tif (isPromise(readyPromise)) await readyPromise;\n\tif (notFoundToThrow) throw notFoundToThrow;\n\tif (inner.serialError && !inner.preload && !inner.onReady) throw inner.serialError;\n\treturn inner.matches;\n}\nfunction preloadRouteComponents(route, componentTypesToLoad) {\n\tconst preloads = componentTypesToLoad.map((type) => route.options[type]?.preload?.()).filter(Boolean);\n\tif (preloads.length === 0) return void 0;\n\treturn Promise.all(preloads);\n}\nfunction loadRouteChunk(route, componentTypesToLoad = componentTypes) {\n\tif (!route._lazyLoaded && route._lazyPromise === void 0) if (route.lazyFn) route._lazyPromise = route.lazyFn().then((lazyRoute) => {\n\t\tconst { id: _id, ...options } = lazyRoute.options;\n\t\tObject.assign(route.options, options);\n\t\troute._lazyLoaded = true;\n\t\troute._lazyPromise = void 0;\n\t});\n\telse route._lazyLoaded = true;\n\tconst runAfterLazy = () => route._componentsLoaded ? void 0 : componentTypesToLoad === componentTypes ? (() => {\n\t\tif (route._componentsPromise === void 0) {\n\t\t\tconst componentsPromise = preloadRouteComponents(route, componentTypes);\n\t\t\tif (componentsPromise) route._componentsPromise = componentsPromise.then(() => {\n\t\t\t\troute._componentsLoaded = true;\n\t\t\t\troute._componentsPromise = void 0;\n\t\t\t});\n\t\t\telse route._componentsLoaded = true;\n\t\t}\n\t\treturn route._componentsPromise;\n\t})() : preloadRouteComponents(route, componentTypesToLoad);\n\treturn route._lazyPromise ? route._lazyPromise.then(runAfterLazy) : runAfterLazy();\n}\nfunction makeMaybe(value, error) {\n\tif (error) return {\n\t\tstatus: \"error\",\n\t\terror\n\t};\n\treturn {\n\t\tstatus: \"success\",\n\t\tvalue\n\t};\n}\nfunction routeNeedsPreload(route) {\n\tfor (const componentType of componentTypes) if (route.options[componentType]?.preload) return true;\n\treturn false;\n}\nconst componentTypes = [\n\t\"component\",\n\t\"errorComponent\",\n\t\"pendingComponent\",\n\t\"notFoundComponent\"\n];\n//#endregion\nexport { loadMatches, loadRouteChunk, routeNeedsPreload };\n\n//# sourceMappingURL=load-matches.js.map","import { joinPaths, trimPath } from \"./path.js\";\n//#region src/rewrite.ts\n/** Compose multiple rewrite pairs into a single in/out rewrite. */\nfunction composeRewrites(rewrites) {\n\treturn {\n\t\tinput: ({ url }) => {\n\t\t\tfor (const rewrite of rewrites) url = executeRewriteInput(rewrite, url);\n\t\t\treturn url;\n\t\t},\n\t\toutput: ({ url }) => {\n\t\t\tfor (let i = rewrites.length - 1; i >= 0; i--) url = executeRewriteOutput(rewrites[i], url);\n\t\t\treturn url;\n\t\t}\n\t};\n}\n/** Create a rewrite pair that strips/adds a basepath on input/output. */\nfunction rewriteBasepath(opts) {\n\tconst trimmedBasepath = trimPath(opts.basepath);\n\tconst normalizedBasepath = `/${trimmedBasepath}`;\n\tconst checkBasepath = opts.caseSensitive ? normalizedBasepath : normalizedBasepath.toLowerCase();\n\tconst checkBasepathWithSlash = `${checkBasepath}/`;\n\treturn {\n\t\tinput: ({ url }) => {\n\t\t\tconst pathname = opts.caseSensitive ? url.pathname : url.pathname.toLowerCase();\n\t\t\tif (pathname === checkBasepath) url.pathname = \"/\";\n\t\t\telse if (pathname.startsWith(checkBasepathWithSlash)) url.pathname = url.pathname.slice(normalizedBasepath.length);\n\t\t\treturn url;\n\t\t},\n\t\toutput: ({ url }) => {\n\t\t\turl.pathname = joinPaths([\n\t\t\t\t\"/\",\n\t\t\t\ttrimmedBasepath,\n\t\t\t\turl.pathname\n\t\t\t]);\n\t\t\treturn url;\n\t\t}\n\t};\n}\n/** Execute a location input rewrite if provided. */\nfunction executeRewriteInput(rewrite, url) {\n\tconst res = rewrite?.input?.({ url });\n\tif (res) {\n\t\tif (typeof res === \"string\") return new URL(res);\n\t\telse if (res instanceof URL) return res;\n\t}\n\treturn url;\n}\n/** Execute a location output rewrite if provided. */\nfunction executeRewriteOutput(rewrite, url) {\n\tconst res = rewrite?.output?.({ url });\n\tif (res) {\n\t\tif (typeof res === \"string\") return new URL(res);\n\t\telse if (res instanceof URL) return res;\n\t}\n\treturn url;\n}\n//#endregion\nexport { composeRewrites, executeRewriteInput, executeRewriteOutput, rewriteBasepath };\n\n//# sourceMappingURL=rewrite.js.map","import { arraysEqual, functionalUpdate } from \"./utils.js\";\nimport { createLRUCache } from \"./lru-cache.js\";\n//#region src/stores.ts\n/** SSR non-reactive createMutableStore */\nfunction createNonReactiveMutableStore(initialValue) {\n\tlet value = initialValue;\n\treturn {\n\t\tget() {\n\t\t\treturn value;\n\t\t},\n\t\tset(nextOrUpdater) {\n\t\t\tvalue = functionalUpdate(nextOrUpdater, value);\n\t\t}\n\t};\n}\n/** SSR non-reactive createReadonlyStore */\nfunction createNonReactiveReadonlyStore(read) {\n\treturn { get() {\n\t\treturn read();\n\t} };\n}\nfunction createRouterStores(initialState, config) {\n\tconst { createMutableStore, createReadonlyStore, batch, init } = config;\n\tconst matchStores = /* @__PURE__ */ new Map();\n\tconst pendingMatchStores = /* @__PURE__ */ new Map();\n\tconst cachedMatchStores = /* @__PURE__ */ new Map();\n\tconst status = createMutableStore(initialState.status);\n\tconst loadedAt = createMutableStore(initialState.loadedAt);\n\tconst isLoading = createMutableStore(initialState.isLoading);\n\tconst isTransitioning = createMutableStore(initialState.isTransitioning);\n\tconst location = createMutableStore(initialState.location);\n\tconst resolvedLocation = createMutableStore(initialState.resolvedLocation);\n\tconst statusCode = createMutableStore(initialState.statusCode);\n\tconst redirect = createMutableStore(initialState.redirect);\n\tconst matchesId = createMutableStore([]);\n\tconst pendingIds = createMutableStore([]);\n\tconst cachedIds = createMutableStore([]);\n\tconst matches = createReadonlyStore(() => readPoolMatches(matchStores, matchesId.get()));\n\tconst pendingMatches = createReadonlyStore(() => readPoolMatches(pendingMatchStores, pendingIds.get()));\n\tconst cachedMatches = createReadonlyStore(() => readPoolMatches(cachedMatchStores, cachedIds.get()));\n\tconst firstId = createReadonlyStore(() => matchesId.get()[0]);\n\tconst hasPending = createReadonlyStore(() => matchesId.get().some((matchId) => {\n\t\treturn matchStores.get(matchId)?.get().status === \"pending\";\n\t}));\n\tconst matchRouteDeps = createReadonlyStore(() => ({\n\t\tlocationHref: location.get().href,\n\t\tresolvedLocationHref: resolvedLocation.get()?.href,\n\t\tstatus: status.get()\n\t}));\n\tconst __store = createReadonlyStore(() => ({\n\t\tstatus: status.get(),\n\t\tloadedAt: loadedAt.get(),\n\t\tisLoading: isLoading.get(),\n\t\tisTransitioning: isTransitioning.get(),\n\t\tmatches: matches.get(),\n\t\tlocation: location.get(),\n\t\tresolvedLocation: resolvedLocation.get(),\n\t\tstatusCode: statusCode.get(),\n\t\tredirect: redirect.get()\n\t}));\n\tconst matchStoreByRouteIdCache = createLRUCache(64);\n\tfunction getRouteMatchStore(routeId) {\n\t\tlet cached = matchStoreByRouteIdCache.get(routeId);\n\t\tif (!cached) {\n\t\t\tcached = createReadonlyStore(() => {\n\t\t\t\tconst ids = matchesId.get();\n\t\t\t\tfor (const id of ids) {\n\t\t\t\t\tconst matchStore = matchStores.get(id);\n\t\t\t\t\tif (matchStore && matchStore.routeId === routeId) return matchStore.get();\n\t\t\t\t}\n\t\t\t});\n\t\t\tmatchStoreByRouteIdCache.set(routeId, cached);\n\t\t}\n\t\treturn cached;\n\t}\n\tconst store = {\n\t\tstatus,\n\t\tloadedAt,\n\t\tisLoading,\n\t\tisTransitioning,\n\t\tlocation,\n\t\tresolvedLocation,\n\t\tstatusCode,\n\t\tredirect,\n\t\tmatchesId,\n\t\tpendingIds,\n\t\tcachedIds,\n\t\tmatches,\n\t\tpendingMatches,\n\t\tcachedMatches,\n\t\tfirstId,\n\t\thasPending,\n\t\tmatchRouteDeps,\n\t\tmatchStores,\n\t\tpendingMatchStores,\n\t\tcachedMatchStores,\n\t\t__store,\n\t\tgetRouteMatchStore,\n\t\tsetMatches,\n\t\tsetPending,\n\t\tsetCached\n\t};\n\tsetMatches(initialState.matches);\n\tinit?.(store);\n\tfunction setMatches(nextMatches) {\n\t\treconcileMatchPool(nextMatches, matchStores, matchesId, createMutableStore, batch);\n\t}\n\tfunction setPending(nextMatches) {\n\t\treconcileMatchPool(nextMatches, pendingMatchStores, pendingIds, createMutableStore, batch);\n\t}\n\tfunction setCached(nextMatches) {\n\t\treconcileMatchPool(nextMatches, cachedMatchStores, cachedIds, createMutableStore, batch);\n\t}\n\treturn store;\n}\nfunction readPoolMatches(pool, ids) {\n\tconst matches = [];\n\tfor (const id of ids) {\n\t\tconst matchStore = pool.get(id);\n\t\tif (matchStore) matches.push(matchStore.get());\n\t}\n\treturn matches;\n}\nfunction reconcileMatchPool(nextMatches, pool, idStore, createMutableStore, batch) {\n\tconst nextIds = nextMatches.map((d) => d.id);\n\tconst nextIdSet = new Set(nextIds);\n\tbatch(() => {\n\t\tfor (const id of pool.keys()) if (!nextIdSet.has(id)) pool.delete(id);\n\t\tfor (const nextMatch of nextMatches) {\n\t\t\tconst existing = pool.get(nextMatch.id);\n\t\t\tif (!existing) {\n\t\t\t\tconst matchStore = createMutableStore(nextMatch);\n\t\t\t\tmatchStore.routeId = nextMatch.routeId;\n\t\t\t\tpool.set(nextMatch.id, matchStore);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\texisting.routeId = nextMatch.routeId;\n\t\t\tif (existing.get() !== nextMatch) existing.set(nextMatch);\n\t\t}\n\t\tif (!arraysEqual(idStore.get(), nextIds)) idStore.set(nextIds);\n\t});\n}\n//#endregion\nexport { createNonReactiveMutableStore, createNonReactiveReadonlyStore, createRouterStores };\n\n//# sourceMappingURL=stores.js.map","//#region src/index.ts\nvar stateIndexKey = \"__TSR_index\";\nvar popStateEvent = \"popstate\";\nvar beforeUnloadEvent = \"beforeunload\";\nfunction createHistory(opts) {\n\tlet location = opts.getLocation();\n\tconst subscribers = /* @__PURE__ */ new Set();\n\tconst notify = (action) => {\n\t\tlocation = opts.getLocation();\n\t\tsubscribers.forEach((subscriber) => subscriber({\n\t\t\tlocation,\n\t\t\taction\n\t\t}));\n\t};\n\tconst handleIndexChange = (action) => {\n\t\tif (opts.notifyOnIndexChange ?? true) notify(action);\n\t\telse location = opts.getLocation();\n\t};\n\tconst tryNavigation = async ({ task, navigateOpts, ...actionInfo }) => {\n\t\tif (navigateOpts?.ignoreBlocker ?? false) {\n\t\t\ttask();\n\t\t\treturn;\n\t\t}\n\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\tconst isPushOrReplace = actionInfo.type === \"PUSH\" || actionInfo.type === \"REPLACE\";\n\t\tif (typeof document !== \"undefined\" && blockers.length && isPushOrReplace) for (const blocker of blockers) {\n\t\t\tconst nextLocation = parseHref(actionInfo.path, actionInfo.state);\n\t\t\tif (await blocker.blockerFn({\n\t\t\t\tcurrentLocation: location,\n\t\t\t\tnextLocation,\n\t\t\t\taction: actionInfo.type\n\t\t\t})) {\n\t\t\t\topts.onBlocked?.();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\ttask();\n\t};\n\treturn {\n\t\tget location() {\n\t\t\treturn location;\n\t\t},\n\t\tget length() {\n\t\t\treturn opts.getLength();\n\t\t},\n\t\tsubscribers,\n\t\tsubscribe: (cb) => {\n\t\t\tsubscribers.add(cb);\n\t\t\treturn () => {\n\t\t\t\tsubscribers.delete(cb);\n\t\t\t};\n\t\t},\n\t\tpush: (path, state, navigateOpts) => {\n\t\t\tconst currentIndex = location.state[stateIndexKey];\n\t\t\tstate = assignKeyAndIndex(currentIndex + 1, state);\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.pushState(path, state);\n\t\t\t\t\tnotify({ type: \"PUSH\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"PUSH\",\n\t\t\t\tpath,\n\t\t\t\tstate\n\t\t\t});\n\t\t},\n\t\treplace: (path, state, navigateOpts) => {\n\t\t\tconst currentIndex = location.state[stateIndexKey];\n\t\t\tstate = assignKeyAndIndex(currentIndex, state);\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.replaceState(path, state);\n\t\t\t\t\tnotify({ type: \"REPLACE\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"REPLACE\",\n\t\t\t\tpath,\n\t\t\t\tstate\n\t\t\t});\n\t\t},\n\t\tgo: (index, navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.go(index);\n\t\t\t\t\thandleIndexChange({\n\t\t\t\t\t\ttype: \"GO\",\n\t\t\t\t\t\tindex\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"GO\"\n\t\t\t});\n\t\t},\n\t\tback: (navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.back(navigateOpts?.ignoreBlocker ?? false);\n\t\t\t\t\thandleIndexChange({ type: \"BACK\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"BACK\"\n\t\t\t});\n\t\t},\n\t\tforward: (navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.forward(navigateOpts?.ignoreBlocker ?? false);\n\t\t\t\t\thandleIndexChange({ type: \"FORWARD\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"FORWARD\"\n\t\t\t});\n\t\t},\n\t\tcanGoBack: () => location.state[stateIndexKey] !== 0,\n\t\tcreateHref: (str) => opts.createHref(str),\n\t\tblock: (blocker) => {\n\t\t\tif (!opts.setBlockers) return () => {};\n\t\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\t\topts.setBlockers([...blockers, blocker]);\n\t\t\treturn () => {\n\t\t\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\t\t\topts.setBlockers?.(blockers.filter((b) => b !== blocker));\n\t\t\t};\n\t\t},\n\t\tflush: () => opts.flush?.(),\n\t\tdestroy: () => opts.destroy?.(),\n\t\tnotify\n\t};\n}\nfunction assignKeyAndIndex(index, state) {\n\tif (!state) state = {};\n\tconst key = createRandomKey();\n\treturn {\n\t\t...state,\n\t\tkey,\n\t\t__TSR_key: key,\n\t\t[stateIndexKey]: index\n\t};\n}\n/**\n* Creates a history object that can be used to interact with the browser's\n* navigation. This is a lightweight API wrapping the browser's native methods.\n* It is designed to work with TanStack Router, but could be used as a standalone API as well.\n* IMPORTANT: This API implements history throttling via a microtask to prevent\n* excessive calls to the history API. In some browsers, calling history.pushState or\n* history.replaceState in quick succession can cause the browser to ignore subsequent\n* calls. This API smooths out those differences and ensures that your application\n* state will *eventually* match the browser state. In most cases, this is not a problem,\n* but if you need to ensure that the browser state is up to date, you can use the\n* `history.flush` method to immediately flush all pending state changes to the browser URL.\n* @param opts\n* @param opts.getHref A function that returns the current href (path + search + hash)\n* @param opts.createHref A function that takes a path and returns a href (path + search + hash)\n* @returns A history instance\n*/\nfunction createBrowserHistory(opts) {\n\tconst win = opts?.window ?? (typeof document !== \"undefined\" ? window : void 0);\n\tconst originalPushState = win.history.pushState;\n\tconst originalReplaceState = win.history.replaceState;\n\tlet blockers = [];\n\tconst _getBlockers = () => blockers;\n\tconst _setBlockers = (newBlockers) => blockers = newBlockers;\n\tconst createHref = opts?.createHref ?? ((path) => path);\n\tconst parseLocation = opts?.parseLocation ?? (() => parseHref(`${win.location.pathname}${win.location.search}${win.location.hash}`, win.history.state));\n\tif (!win.history.state?.__TSR_key && !win.history.state?.key) {\n\t\tconst addedKey = createRandomKey();\n\t\twin.history.replaceState({\n\t\t\t[stateIndexKey]: 0,\n\t\t\tkey: addedKey,\n\t\t\t__TSR_key: addedKey\n\t\t}, \"\");\n\t}\n\tlet currentLocation = parseLocation();\n\tlet rollbackLocation;\n\tlet nextPopIsGo = false;\n\tlet ignoreNextPop = false;\n\tlet skipBlockerNextPop = false;\n\tlet ignoreNextBeforeUnload = false;\n\tconst getLocation = () => currentLocation;\n\tlet next;\n\tlet scheduled;\n\tconst flush = () => {\n\t\tif (!next) return;\n\t\thistory._ignoreSubscribers = true;\n\t\t(next.isPush ? win.history.pushState : win.history.replaceState)(next.state, \"\", next.href);\n\t\thistory._ignoreSubscribers = false;\n\t\tnext = void 0;\n\t\tscheduled = void 0;\n\t\trollbackLocation = void 0;\n\t};\n\tconst queueHistoryAction = (type, destHref, state) => {\n\t\tconst href = createHref(destHref);\n\t\tif (!scheduled) rollbackLocation = currentLocation;\n\t\tcurrentLocation = parseHref(destHref, state);\n\t\tnext = {\n\t\t\thref,\n\t\t\tstate,\n\t\t\tisPush: next?.isPush || type === \"push\"\n\t\t};\n\t\tif (!scheduled) scheduled = Promise.resolve().then(() => flush());\n\t};\n\tconst onPushPop = (type) => {\n\t\tcurrentLocation = parseLocation();\n\t\thistory.notify({ type });\n\t};\n\tconst onPushPopEvent = async () => {\n\t\tif (ignoreNextPop) {\n\t\t\tignoreNextPop = false;\n\t\t\treturn;\n\t\t}\n\t\tconst nextLocation = parseLocation();\n\t\tconst delta = nextLocation.state[stateIndexKey] - currentLocation.state[stateIndexKey];\n\t\tconst isForward = delta === 1;\n\t\tconst isBack = delta === -1;\n\t\tconst isGo = !isForward && !isBack || nextPopIsGo;\n\t\tnextPopIsGo = false;\n\t\tconst action = isGo ? \"GO\" : isBack ? \"BACK\" : \"FORWARD\";\n\t\tconst notify = isGo ? {\n\t\t\ttype: \"GO\",\n\t\t\tindex: delta\n\t\t} : { type: isBack ? \"BACK\" : \"FORWARD\" };\n\t\tif (skipBlockerNextPop) skipBlockerNextPop = false;\n\t\telse {\n\t\t\tconst blockers = _getBlockers();\n\t\t\tif (typeof document !== \"undefined\" && blockers.length) {\n\t\t\t\tfor (const blocker of blockers) if (await blocker.blockerFn({\n\t\t\t\t\tcurrentLocation,\n\t\t\t\t\tnextLocation,\n\t\t\t\t\taction\n\t\t\t\t})) {\n\t\t\t\t\tignoreNextPop = true;\n\t\t\t\t\twin.history.go(1);\n\t\t\t\t\thistory.notify(notify);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcurrentLocation = parseLocation();\n\t\thistory.notify(notify);\n\t};\n\tconst onBeforeUnload = (e) => {\n\t\tif (ignoreNextBeforeUnload) {\n\t\t\tignoreNextBeforeUnload = false;\n\t\t\treturn;\n\t\t}\n\t\tlet shouldBlock = false;\n\t\tconst blockers = _getBlockers();\n\t\tif (typeof document !== \"undefined\" && blockers.length) for (const blocker of blockers) {\n\t\t\tconst shouldHaveBeforeUnload = blocker.enableBeforeUnload ?? true;\n\t\t\tif (shouldHaveBeforeUnload === true) {\n\t\t\t\tshouldBlock = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (typeof shouldHaveBeforeUnload === \"function\" && shouldHaveBeforeUnload() === true) {\n\t\t\t\tshouldBlock = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (shouldBlock) {\n\t\t\te.preventDefault();\n\t\t\treturn e.returnValue = \"\";\n\t\t}\n\t};\n\tconst history = createHistory({\n\t\tgetLocation,\n\t\tgetLength: () => win.history.length,\n\t\tpushState: (href, state) => queueHistoryAction(\"push\", href, state),\n\t\treplaceState: (href, state) => queueHistoryAction(\"replace\", href, state),\n\t\tback: (ignoreBlocker) => {\n\t\t\tif (ignoreBlocker) skipBlockerNextPop = true;\n\t\t\tignoreNextBeforeUnload = true;\n\t\t\treturn win.history.back();\n\t\t},\n\t\tforward: (ignoreBlocker) => {\n\t\t\tif (ignoreBlocker) skipBlockerNextPop = true;\n\t\t\tignoreNextBeforeUnload = true;\n\t\t\twin.history.forward();\n\t\t},\n\t\tgo: (n) => {\n\t\t\tnextPopIsGo = true;\n\t\t\twin.history.go(n);\n\t\t},\n\t\tcreateHref: (href) => createHref(href),\n\t\tflush,\n\t\tdestroy: () => {\n\t\t\twin.history.pushState = originalPushState;\n\t\t\twin.history.replaceState = originalReplaceState;\n\t\t\twin.removeEventListener(beforeUnloadEvent, onBeforeUnload, { capture: true });\n\t\t\twin.removeEventListener(popStateEvent, onPushPopEvent);\n\t\t},\n\t\tonBlocked: () => {\n\t\t\tif (rollbackLocation && currentLocation !== rollbackLocation) currentLocation = rollbackLocation;\n\t\t},\n\t\tgetBlockers: _getBlockers,\n\t\tsetBlockers: _setBlockers,\n\t\tnotifyOnIndexChange: false\n\t});\n\twin.addEventListener(beforeUnloadEvent, onBeforeUnload, { capture: true });\n\twin.addEventListener(popStateEvent, onPushPopEvent);\n\twin.history.pushState = function(...args) {\n\t\tconst res = originalPushState.apply(win.history, args);\n\t\tif (!history._ignoreSubscribers) onPushPop(\"PUSH\");\n\t\treturn res;\n\t};\n\twin.history.replaceState = function(...args) {\n\t\tconst res = originalReplaceState.apply(win.history, args);\n\t\tif (!history._ignoreSubscribers) onPushPop(\"REPLACE\");\n\t\treturn res;\n\t};\n\treturn history;\n}\n/**\n* Create a hash-based history implementation.\n* Useful for static hosts or environments without server URL rewriting.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/history-types\n*/\nfunction createHashHistory(opts) {\n\tconst win = opts?.window ?? (typeof document !== \"undefined\" ? window : void 0);\n\treturn createBrowserHistory({\n\t\twindow: win,\n\t\tparseLocation: () => {\n\t\t\tconst hashSplit = win.location.hash.split(\"#\").slice(1);\n\t\t\tconst pathPart = hashSplit[0] ?? \"/\";\n\t\t\tconst searchPart = win.location.search;\n\t\t\tconst hashEntries = hashSplit.slice(1);\n\t\t\treturn parseHref(`${pathPart}${searchPart}${hashEntries.length === 0 ? \"\" : `#${hashEntries.join(\"#\")}`}`, win.history.state);\n\t\t},\n\t\tcreateHref: (href) => `${win.location.pathname}${win.location.search}#${href}`\n\t});\n}\n/**\n* Create an in-memory history implementation.\n* Ideal for server rendering, tests, and non-DOM environments.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/history-types\n*/\nfunction createMemoryHistory(opts = { initialEntries: [\"/\"] }) {\n\tconst entries = opts.initialEntries;\n\tlet index = opts.initialIndex ? Math.min(Math.max(opts.initialIndex, 0), entries.length - 1) : entries.length - 1;\n\tconst states = entries.map((_entry, index) => assignKeyAndIndex(index, void 0));\n\tconst getLocation = () => parseHref(entries[index], states[index]);\n\tlet blockers = [];\n\tconst _getBlockers = () => blockers;\n\tconst _setBlockers = (newBlockers) => blockers = newBlockers;\n\treturn createHistory({\n\t\tgetLocation,\n\t\tgetLength: () => entries.length,\n\t\tpushState: (path, state) => {\n\t\t\tif (index < entries.length - 1) {\n\t\t\t\tentries.splice(index + 1);\n\t\t\t\tstates.splice(index + 1);\n\t\t\t}\n\t\t\tstates.push(state);\n\t\t\tentries.push(path);\n\t\t\tindex = Math.max(entries.length - 1, 0);\n\t\t},\n\t\treplaceState: (path, state) => {\n\t\t\tstates[index] = state;\n\t\t\tentries[index] = path;\n\t\t},\n\t\tback: () => {\n\t\t\tindex = Math.max(index - 1, 0);\n\t\t},\n\t\tforward: () => {\n\t\t\tindex = Math.min(index + 1, entries.length - 1);\n\t\t},\n\t\tgo: (n) => {\n\t\t\tindex = Math.min(Math.max(index + n, 0), entries.length - 1);\n\t\t},\n\t\tcreateHref: (path) => path,\n\t\tgetBlockers: _getBlockers,\n\t\tsetBlockers: _setBlockers\n\t});\n}\n/**\n* Sanitize a path to prevent open redirect vulnerabilities.\n* Removes control characters and collapses leading double slashes.\n*/\nfunction sanitizePath(path) {\n\tlet sanitized = path.replace(/[\\x00-\\x1f\\x7f]/g, \"\");\n\tif (sanitized.startsWith(\"//\")) sanitized = \"/\" + sanitized.replace(/^\\/+/, \"\");\n\treturn sanitized;\n}\nfunction parseHref(href, state) {\n\tconst sanitizedHref = sanitizePath(href);\n\tconst hashIndex = sanitizedHref.indexOf(\"#\");\n\tconst searchIndex = sanitizedHref.indexOf(\"?\");\n\tconst addedKey = createRandomKey();\n\treturn {\n\t\thref: sanitizedHref,\n\t\tpathname: sanitizedHref.substring(0, hashIndex > 0 ? searchIndex > 0 ? Math.min(hashIndex, searchIndex) : hashIndex : searchIndex > 0 ? searchIndex : sanitizedHref.length),\n\t\thash: hashIndex > -1 ? sanitizedHref.substring(hashIndex) : \"\",\n\t\tsearch: searchIndex > -1 ? sanitizedHref.slice(searchIndex, hashIndex === -1 ? void 0 : hashIndex) : \"\",\n\t\tstate: state || {\n\t\t\t[stateIndexKey]: 0,\n\t\t\tkey: addedKey,\n\t\t\t__TSR_key: addedKey\n\t\t}\n\t};\n}\nfunction createRandomKey() {\n\treturn (Math.random() + 1).toString(36).substring(7);\n}\n//#endregion\nexport { createBrowserHistory, createHashHistory, createHistory, createMemoryHistory, parseHref };\n\n//# sourceMappingURL=index.js.map","import { DEFAULT_PROTOCOL_ALLOWLIST, createControlledPromise, decodePath, deepEqual, encodePathLikeUrl, findLast, functionalUpdate, hasKeys, isDangerousProtocol, last, nullReplaceEqualDeep, replaceEqualDeep } from \"./utils.js\";\nimport { createLRUCache } from \"./lru-cache.js\";\nimport { buildRouteBranch, findFlatMatch, findRouteMatch, findSingleMatch, processRouteMasks, processRouteTree } from \"./new-process-route-tree.js\";\nimport { cleanPath, compileDecodeCharMap, interpolatePath, resolvePath, trimPath, trimPathRight } from \"./path.js\";\nimport { isNotFound } from \"./not-found.js\";\nimport { setupScrollRestoration } from \"./scroll-restoration.js\";\nimport { defaultParseSearch, defaultStringifySearch } from \"./searchParams.js\";\nimport { rootRouteId } from \"./root.js\";\nimport { isRedirect, redirect } from \"./redirect.js\";\nimport { loadMatches, loadRouteChunk, routeNeedsPreload } from \"./load-matches.js\";\nimport { composeRewrites, executeRewriteInput, executeRewriteOutput, rewriteBasepath } from \"./rewrite.js\";\nimport { createRouterStores } from \"./stores.js\";\nimport { createBrowserHistory, parseHref } from \"@tanstack/history\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/router.ts\n/**\n* Convert an unknown error into a minimal, serializable object.\n* Includes name and message (and stack in development).\n*/\nfunction defaultSerializeError(err) {\n\tif (err instanceof Error) {\n\t\tconst obj = {\n\t\t\tname: err.name,\n\t\t\tmessage: err.message\n\t\t};\n\t\tif (process.env.NODE_ENV === \"development\") obj.stack = err.stack;\n\t\treturn obj;\n\t}\n\treturn { data: err };\n}\n/** Options for configuring trailing-slash behavior. */\nconst trailingSlashOptions = {\n\talways: \"always\",\n\tnever: \"never\",\n\tpreserve: \"preserve\"\n};\n/**\n* Compute whether path, href or hash changed between previous and current\n* resolved locations.\n*/\nfunction getLocationChangeInfo(location, resolvedLocation) {\n\tconst fromLocation = resolvedLocation;\n\tconst toLocation = location;\n\treturn {\n\t\tfromLocation,\n\t\ttoLocation,\n\t\tpathChanged: fromLocation?.pathname !== toLocation.pathname,\n\t\threfChanged: fromLocation?.href !== toLocation.href,\n\t\thashChanged: fromLocation?.hash !== toLocation.hash\n\t};\n}\nconst locationHistoryActions = /* @__PURE__ */ new WeakMap();\n/**\n* Core, framework-agnostic router engine that powers TanStack Router.\n*\n* Provides navigation, matching, loading, preloading, caching and event APIs\n* used by framework adapters (React/Solid). Prefer framework helpers like\n* `createRouter` in app code.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/RouterType\n*/\nvar RouterCore = class {\n\t/**\n\t* @deprecated Use the `createRouter` function instead\n\t*/\n\tconstructor(options, getStoreConfig) {\n\t\tthis.tempLocationKey = `${Math.round(Math.random() * 1e7)}`;\n\t\tthis._scroll = { next: true };\n\t\tthis.shouldViewTransition = void 0;\n\t\tthis.isViewTransitionTypesSupported = void 0;\n\t\tthis.subscribers = /* @__PURE__ */ new Set();\n\t\tthis.routeBranchCache = /* @__PURE__ */ new WeakMap();\n\t\tthis.lightweightCache = /* @__PURE__ */ new WeakMap();\n\t\tthis.startTransition = (fn) => fn();\n\t\tthis.update = (newOptions) => {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (newOptions.notFoundRoute) console.warn(\"The notFoundRoute API is deprecated and will be removed in the next major version. See https://tanstack.com/router/v1/docs/framework/react/guide/not-found-errors#migrating-from-notfoundroute for more info.\");\n\t\t\t}\n\t\t\tconst prevOptions = this.options;\n\t\t\tconst prevBasepath = this.basepath ?? prevOptions?.basepath ?? \"/\";\n\t\t\tconst basepathWasUnset = this.basepath === void 0;\n\t\t\tconst prevRewriteOption = prevOptions?.rewrite;\n\t\t\tthis.options = {\n\t\t\t\t...prevOptions,\n\t\t\t\t...newOptions\n\t\t\t};\n\t\t\tthis.isServer = this.options.isServer ?? typeof document === \"undefined\";\n\t\t\tthis.protocolAllowlist = new Set(this.options.protocolAllowlist);\n\t\t\tif (this.options.pathParamsAllowedCharacters) this.pathParamsDecoder = compileDecodeCharMap(this.options.pathParamsAllowedCharacters);\n\t\t\tif (!this.history || this.options.history && this.options.history !== this.history) if (!this.options.history) {\n\t\t\t\tif (!(isServer ?? this.isServer)) this.history = createBrowserHistory();\n\t\t\t} else this.history = this.options.history;\n\t\t\tthis.origin = this.options.origin;\n\t\t\tif (!this.origin) if (!(isServer ?? this.isServer) && window?.origin && window.origin !== \"null\") this.origin = window.origin;\n\t\t\telse this.origin = \"http://localhost\";\n\t\t\tif (this.history) this.updateLatestLocation();\n\t\t\tif (this.options.routeTree !== this.routeTree) {\n\t\t\t\tthis.routeTree = this.options.routeTree;\n\t\t\t\tlet processRouteTreeResult;\n\t\t\t\tif ((isServer ?? this.isServer) && process.env.NODE_ENV !== \"development\" && globalThis.__TSR_CACHE__ && globalThis.__TSR_CACHE__.routeTree === this.routeTree) {\n\t\t\t\t\tconst cached = globalThis.__TSR_CACHE__;\n\t\t\t\t\tthis.resolvePathCache = cached.resolvePathCache;\n\t\t\t\t\tprocessRouteTreeResult = cached.processRouteTreeResult;\n\t\t\t\t} else {\n\t\t\t\t\tthis.resolvePathCache = createLRUCache(1e3);\n\t\t\t\t\tprocessRouteTreeResult = this.buildRouteTree();\n\t\t\t\t\tif ((isServer ?? this.isServer) && process.env.NODE_ENV !== \"development\" && globalThis.__TSR_CACHE__ === void 0) globalThis.__TSR_CACHE__ = {\n\t\t\t\t\t\trouteTree: this.routeTree,\n\t\t\t\t\t\tprocessRouteTreeResult,\n\t\t\t\t\t\tresolvePathCache: this.resolvePathCache\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis.setRoutes(processRouteTreeResult);\n\t\t\t}\n\t\t\tif (!this.stores && this.latestLocation) {\n\t\t\t\tconst config = this.getStoreConfig(this);\n\t\t\t\tthis.batch = config.batch;\n\t\t\t\tthis.stores = createRouterStores(getInitialRouterState(this.latestLocation), config);\n\t\t\t\tif (!(isServer ?? this.isServer)) setupScrollRestoration(this);\n\t\t\t}\n\t\t\tlet needsLocationUpdate = false;\n\t\t\tconst nextBasepath = this.options.basepath ?? \"/\";\n\t\t\tconst nextRewriteOption = this.options.rewrite;\n\t\t\tif (basepathWasUnset || prevBasepath !== nextBasepath || prevRewriteOption !== nextRewriteOption) {\n\t\t\t\tthis.basepath = nextBasepath;\n\t\t\t\tconst rewrites = [];\n\t\t\t\tconst trimmed = trimPath(nextBasepath);\n\t\t\t\tif (trimmed && trimmed !== \"/\") rewrites.push(rewriteBasepath({ basepath: nextBasepath }));\n\t\t\t\tif (nextRewriteOption) rewrites.push(nextRewriteOption);\n\t\t\t\tthis.rewrite = rewrites.length === 0 ? void 0 : rewrites.length === 1 ? rewrites[0] : composeRewrites(rewrites);\n\t\t\t\tif (this.history) this.updateLatestLocation();\n\t\t\t\tneedsLocationUpdate = true;\n\t\t\t}\n\t\t\tif (needsLocationUpdate && this.stores) this.stores.location.set(this.latestLocation);\n\t\t\tif (typeof window !== \"undefined\" && \"CSS\" in window && typeof window.CSS?.supports === \"function\") this.isViewTransitionTypesSupported = window.CSS.supports(\"selector(:active-view-transition-type(a))\");\n\t\t};\n\t\tthis.updateLatestLocation = () => {\n\t\t\tthis.latestLocation = this.parseLocation(this.history.location, this.latestLocation);\n\t\t};\n\t\tthis.buildRouteTree = () => {\n\t\t\tconst result = processRouteTree(this.routeTree, this.options.caseSensitive, (route, i) => {\n\t\t\t\troute.init({ originalIndex: i });\n\t\t\t});\n\t\t\tif (this.options.routeMasks) processRouteMasks(this.options.routeMasks, result.processedTree);\n\t\t\treturn result;\n\t\t};\n\t\tthis.subscribe = (eventType, fn) => {\n\t\t\tconst listener = {\n\t\t\t\teventType,\n\t\t\t\tfn\n\t\t\t};\n\t\t\tthis.subscribers.add(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.subscribers.delete(listener);\n\t\t\t};\n\t\t};\n\t\tthis.emit = (routerEvent) => {\n\t\t\tthis.subscribers.forEach((listener) => {\n\t\t\t\tif (listener.eventType === routerEvent.type) listener.fn(routerEvent);\n\t\t\t});\n\t\t};\n\t\tthis.parseLocation = (locationToParse, previousLocation) => {\n\t\t\tconst parse = ({ pathname, search, hash, href, state }) => {\n\t\t\t\tif (!this.rewrite && !/[ \\x00-\\x1f\\x7f\\u0080-\\uffff]/.test(pathname)) {\n\t\t\t\t\tconst parsedSearch = this.options.parseSearch(search);\n\t\t\t\t\tconst searchStr = this.options.stringifySearch(parsedSearch);\n\t\t\t\t\treturn {\n\t\t\t\t\t\thref: pathname + searchStr + hash,\n\t\t\t\t\t\tpublicHref: pathname + searchStr + hash,\n\t\t\t\t\t\tpathname: decodePath(pathname).path,\n\t\t\t\t\t\texternal: false,\n\t\t\t\t\t\tsearchStr,\n\t\t\t\t\t\tsearch: nullReplaceEqualDeep(previousLocation?.search, parsedSearch),\n\t\t\t\t\t\thash: decodePath(hash.slice(1)).path,\n\t\t\t\t\t\tstate: replaceEqualDeep(previousLocation?.state, state)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst fullUrl = new URL(href, this.origin);\n\t\t\t\tconst url = executeRewriteInput(this.rewrite, fullUrl);\n\t\t\t\tconst parsedSearch = this.options.parseSearch(url.search);\n\t\t\t\tconst searchStr = this.options.stringifySearch(parsedSearch);\n\t\t\t\turl.search = searchStr;\n\t\t\t\treturn {\n\t\t\t\t\thref: url.href.replace(url.origin, \"\"),\n\t\t\t\t\tpublicHref: href,\n\t\t\t\t\tpathname: decodePath(url.pathname).path,\n\t\t\t\t\texternal: !!this.rewrite && url.origin !== this.origin,\n\t\t\t\t\tsearchStr,\n\t\t\t\t\tsearch: nullReplaceEqualDeep(previousLocation?.search, parsedSearch),\n\t\t\t\t\thash: decodePath(url.hash.slice(1)).path,\n\t\t\t\t\tstate: replaceEqualDeep(previousLocation?.state, state)\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst location = parse(locationToParse);\n\t\t\tconst { __tempLocation, __tempKey } = location.state;\n\t\t\tif (__tempLocation && (!__tempKey || __tempKey === this.tempLocationKey)) {\n\t\t\t\tconst parsedTempLocation = parse(__tempLocation);\n\t\t\t\tparsedTempLocation.state.key = location.state.key;\n\t\t\t\tparsedTempLocation.state.__TSR_key = location.state.__TSR_key;\n\t\t\t\tdelete parsedTempLocation.state.__tempLocation;\n\t\t\t\treturn {\n\t\t\t\t\t...parsedTempLocation,\n\t\t\t\t\tmaskedLocation: location\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn location;\n\t\t};\n\t\tthis.resolvePathWithBase = (from, path) => {\n\t\t\treturn resolvePath({\n\t\t\t\tbase: from,\n\t\t\t\tto: path.includes(\"//\") ? cleanPath(path) : path,\n\t\t\t\ttrailingSlash: this.options.trailingSlash,\n\t\t\t\tcache: this.resolvePathCache\n\t\t\t});\n\t\t};\n\t\tthis.matchRoutes = (pathnameOrNext, locationSearchOrOpts, opts) => {\n\t\t\tif (typeof pathnameOrNext === \"string\") return this.matchRoutesInternal({\n\t\t\t\tpathname: pathnameOrNext,\n\t\t\t\tsearch: locationSearchOrOpts\n\t\t\t}, opts);\n\t\t\treturn this.matchRoutesInternal(pathnameOrNext, locationSearchOrOpts);\n\t\t};\n\t\tthis.getMatchedRoutes = (pathname) => {\n\t\t\treturn getMatchedRoutes({\n\t\t\t\tpathname,\n\t\t\t\troutesById: this.routesById,\n\t\t\t\tprocessedTree: this.processedTree\n\t\t\t});\n\t\t};\n\t\tthis.cancelMatch = (id) => {\n\t\t\tconst match = this.getMatch(id);\n\t\t\tif (!match) return;\n\t\t\tmatch.abortController.abort();\n\t\t\tclearTimeout(match._nonReactive.pendingTimeout);\n\t\t\tmatch._nonReactive.pendingTimeout = void 0;\n\t\t};\n\t\tthis.cancelMatches = () => {\n\t\t\tthis.stores.pendingIds.get().forEach((matchId) => {\n\t\t\t\tthis.cancelMatch(matchId);\n\t\t\t});\n\t\t\tthis.stores.matchesId.get().forEach((matchId) => {\n\t\t\t\tif (this.stores.pendingMatchStores.has(matchId)) return;\n\t\t\t\tconst match = this.stores.matchStores.get(matchId)?.get();\n\t\t\t\tif (!match) return;\n\t\t\t\tif (match.status === \"pending\" || match.isFetching === \"loader\") this.cancelMatch(matchId);\n\t\t\t});\n\t\t};\n\t\tthis.buildLocation = (opts) => {\n\t\t\tconst build = (dest = {}) => {\n\t\t\t\tconst currentLocation = dest._fromLocation || this.pendingBuiltLocation || this.latestLocation;\n\t\t\t\tconst lightweightResult = this.matchRoutesLightweight(currentLocation);\n\t\t\t\tif (dest.from && process.env.NODE_ENV !== \"production\" && dest._isNavigate) {\n\t\t\t\t\tconst allFromMatches = this.getMatchedRoutes(dest.from).matchedRoutes;\n\t\t\t\t\tconst matchedFrom = findLast(lightweightResult.matchedRoutes, (d) => {\n\t\t\t\t\t\treturn comparePaths(d.fullPath, dest.from);\n\t\t\t\t\t});\n\t\t\t\t\tconst matchedCurrent = findLast(allFromMatches, (d) => {\n\t\t\t\t\t\treturn comparePaths(d.fullPath, lightweightResult.fullPath);\n\t\t\t\t\t});\n\t\t\t\t\tif (!matchedFrom && !matchedCurrent) console.warn(`Could not find match for from: ${dest.from}`);\n\t\t\t\t}\n\t\t\t\tconst defaultedFromPath = dest.unsafeRelative === \"path\" ? currentLocation.pathname : dest.from ?? lightweightResult.fullPath;\n\t\t\t\tconst destTo = dest.to ? `${dest.to}` : void 0;\n\t\t\t\tconst fromSearch = lightweightResult.search;\n\t\t\t\tconst fromParams = Object.assign(Object.create(null), lightweightResult.params);\n\t\t\t\tconst sourcePath = destTo?.charCodeAt(0) === 47 ? \"/\" : this.resolvePathWithBase(defaultedFromPath, \".\");\n\t\t\t\tconst nextTo = destTo ? this.resolvePathWithBase(sourcePath, destTo) : sourcePath;\n\t\t\t\tconst nextParams = dest.params === false || dest.params === null ? Object.create(null) : (dest.params ?? true) === true ? fromParams : Object.assign(fromParams, functionalUpdate(dest.params, fromParams));\n\t\t\t\tconst destRoute = this.routesByPath[trimPathRight(nextTo)];\n\t\t\t\tlet destRoutes;\n\t\t\t\tif (destRoute) destRoutes = this.getRouteBranch(destRoute);\n\t\t\t\telse if (nextTo.includes(\"$\")) destRoutes = [];\n\t\t\t\telse {\n\t\t\t\t\tconst destMatchResult = this.getMatchedRoutes(nextTo);\n\t\t\t\t\tdestRoutes = destMatchResult.matchedRoutes;\n\t\t\t\t\tif (this.options.notFoundRoute && (!destMatchResult.foundRoute || destMatchResult.foundRoute.path !== \"/\" && destMatchResult.routeParams[\"**\"])) destRoutes = [...destRoutes, this.options.notFoundRoute];\n\t\t\t\t}\n\t\t\t\tif (destRoutes.length && hasKeys(nextParams)) for (const route of destRoutes) {\n\t\t\t\t\tconst fn = route.options.params?.stringify ?? route.options.stringifyParams;\n\t\t\t\t\tif (fn) try {\n\t\t\t\t\t\tObject.assign(nextParams, fn(nextParams));\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t\tconst nextPathname = opts.leaveParams ? nextTo : decodePath(interpolatePath({\n\t\t\t\t\tpath: nextTo,\n\t\t\t\t\tparams: nextParams,\n\t\t\t\t\tdecoder: this.pathParamsDecoder,\n\t\t\t\t\tserver: this.isServer\n\t\t\t\t}).interpolatedPath).path;\n\t\t\t\tif (process.env.NODE_ENV !== \"production\" && destRoute && !opts.leaveParams) try {\n\t\t\t\t\tconst roundTrip = this.getMatchedRoutes(nextPathname);\n\t\t\t\t\tif (roundTrip.foundRoute?.id !== destRoute.id) console.warn(`Generated path \"${nextPathname}\" for route \"${destRoute.id}\" matched route \"${roundTrip.foundRoute?.id}\" instead. This can happen when multiple route templates resolve to the same URL. Use the route template that matches the intended route, or adjust params.stringify if it changed the target path.`);\n\t\t\t\t} catch {}\n\t\t\t\tlet nextSearch = fromSearch;\n\t\t\t\tif (opts._includeValidateSearch && this.options.search?.strict) {\n\t\t\t\t\tconst validatedSearch = {};\n\t\t\t\t\tdestRoutes.forEach((route) => {\n\t\t\t\t\t\tif (route.options.validateSearch) try {\n\t\t\t\t\t\t\tObject.assign(validatedSearch, validateSearch(route.options.validateSearch, {\n\t\t\t\t\t\t\t\t...validatedSearch,\n\t\t\t\t\t\t\t\t...nextSearch\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t});\n\t\t\t\t\tnextSearch = validatedSearch;\n\t\t\t\t}\n\t\t\t\tnextSearch = applySearchMiddleware({\n\t\t\t\t\tsearch: nextSearch,\n\t\t\t\t\tdest,\n\t\t\t\t\tdestRoutes,\n\t\t\t\t\t_includeValidateSearch: opts._includeValidateSearch\n\t\t\t\t});\n\t\t\t\tnextSearch = nullReplaceEqualDeep(fromSearch, nextSearch);\n\t\t\t\tconst searchStr = this.options.stringifySearch(nextSearch);\n\t\t\t\tconst hash = dest.hash === true ? currentLocation.hash : dest.hash ? functionalUpdate(dest.hash, currentLocation.hash) : void 0;\n\t\t\t\tconst hashStr = hash ? `#${hash}` : \"\";\n\t\t\t\tlet nextState = dest.state === true ? currentLocation.state : dest.state ? functionalUpdate(dest.state, currentLocation.state) : {};\n\t\t\t\tnextState = replaceEqualDeep(currentLocation.state, nextState);\n\t\t\t\tconst fullPath = `${nextPathname}${searchStr}${hashStr}`;\n\t\t\t\tlet href;\n\t\t\t\tlet publicHref;\n\t\t\t\tlet external = false;\n\t\t\t\tif (this.rewrite) {\n\t\t\t\t\tconst url = new URL(fullPath, this.origin);\n\t\t\t\t\tconst rewrittenUrl = executeRewriteOutput(this.rewrite, url);\n\t\t\t\t\thref = url.href.replace(url.origin, \"\");\n\t\t\t\t\tif (rewrittenUrl.origin !== this.origin) {\n\t\t\t\t\t\tpublicHref = rewrittenUrl.href;\n\t\t\t\t\t\texternal = true;\n\t\t\t\t\t} else publicHref = rewrittenUrl.pathname + rewrittenUrl.search + rewrittenUrl.hash;\n\t\t\t\t} else {\n\t\t\t\t\thref = encodePathLikeUrl(fullPath);\n\t\t\t\t\tpublicHref = href;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tpublicHref,\n\t\t\t\t\thref,\n\t\t\t\t\tpathname: nextPathname,\n\t\t\t\t\tsearch: nextSearch,\n\t\t\t\t\tsearchStr,\n\t\t\t\t\tstate: nextState,\n\t\t\t\t\thash: hash ?? \"\",\n\t\t\t\t\texternal,\n\t\t\t\t\tunmaskOnReload: dest.unmaskOnReload\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst buildWithMatches = (dest = {}, maskedDest) => {\n\t\t\t\tconst next = build(dest);\n\t\t\t\tlet maskedNext = maskedDest ? build(maskedDest) : void 0;\n\t\t\t\tif (!maskedNext) {\n\t\t\t\t\tconst params = Object.create(null);\n\t\t\t\t\tif (this.options.routeMasks) {\n\t\t\t\t\t\tconst match = findFlatMatch(next.pathname, this.processedTree);\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tObject.assign(params, match.rawParams);\n\t\t\t\t\t\t\tconst { from: _from, params: maskParams, ...maskProps } = match.route;\n\t\t\t\t\t\t\tconst nextParams = maskParams === false || maskParams === null ? Object.create(null) : (maskParams ?? true) === true ? params : Object.assign(params, functionalUpdate(maskParams, params));\n\t\t\t\t\t\t\tmaskedDest = {\n\t\t\t\t\t\t\t\tfrom: opts.from,\n\t\t\t\t\t\t\t\t...maskProps,\n\t\t\t\t\t\t\t\tparams: nextParams\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tmaskedNext = build(maskedDest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (maskedNext) next.maskedLocation = maskedNext;\n\t\t\t\treturn next;\n\t\t\t};\n\t\t\tif (opts.mask) return buildWithMatches(opts, {\n\t\t\t\tfrom: opts.from,\n\t\t\t\t...opts.mask\n\t\t\t});\n\t\t\treturn buildWithMatches(opts);\n\t\t};\n\t\tthis.commitLocation = async ({ viewTransition, ignoreBlocker, ...next }) => {\n\t\t\tlet historyAction;\n\t\t\tconst isSameState = () => {\n\t\t\t\tconst ignoredProps = [\n\t\t\t\t\t\"key\",\n\t\t\t\t\t\"__TSR_key\",\n\t\t\t\t\t\"__TSR_index\",\n\t\t\t\t\t\"__hashScrollIntoViewOptions\"\n\t\t\t\t];\n\t\t\t\tignoredProps.forEach((prop) => {\n\t\t\t\t\tnext.state[prop] = this.latestLocation.state[prop];\n\t\t\t\t});\n\t\t\t\tconst isEqual = deepEqual(next.state, this.latestLocation.state);\n\t\t\t\tignoredProps.forEach((prop) => {\n\t\t\t\t\tdelete next.state[prop];\n\t\t\t\t});\n\t\t\t\treturn isEqual;\n\t\t\t};\n\t\t\tconst isSameUrl = trimPathRight(this.latestLocation.href) === trimPathRight(next.href);\n\t\t\tlet previousCommitPromise = this.commitLocationPromise;\n\t\t\tthis.commitLocationPromise = createControlledPromise(() => {\n\t\t\t\tpreviousCommitPromise?.resolve();\n\t\t\t\tpreviousCommitPromise = void 0;\n\t\t\t});\n\t\t\tif (isSameUrl && isSameState()) this.load();\n\t\t\telse {\n\t\t\t\tlet { maskedLocation, hashScrollIntoView, ...nextHistory } = next;\n\t\t\t\tif (maskedLocation) {\n\t\t\t\t\tnextHistory = {\n\t\t\t\t\t\t...maskedLocation,\n\t\t\t\t\t\tstate: {\n\t\t\t\t\t\t\t...maskedLocation.state,\n\t\t\t\t\t\t\t__tempKey: void 0,\n\t\t\t\t\t\t\t__tempLocation: {\n\t\t\t\t\t\t\t\t...nextHistory,\n\t\t\t\t\t\t\t\tsearch: nextHistory.searchStr,\n\t\t\t\t\t\t\t\tstate: {\n\t\t\t\t\t\t\t\t\t...nextHistory.state,\n\t\t\t\t\t\t\t\t\t__tempKey: void 0,\n\t\t\t\t\t\t\t\t\t__tempLocation: void 0,\n\t\t\t\t\t\t\t\t\t__TSR_key: void 0,\n\t\t\t\t\t\t\t\t\tkey: void 0\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tif (nextHistory.unmaskOnReload ?? this.options.unmaskOnReload ?? false) nextHistory.state.__tempKey = this.tempLocationKey;\n\t\t\t\t}\n\t\t\t\tnextHistory.state.__hashScrollIntoViewOptions = hashScrollIntoView ?? this.options.defaultHashScrollIntoView ?? true;\n\t\t\t\tthis.shouldViewTransition = viewTransition;\n\t\t\t\thistoryAction = next.replace ? \"REPLACE\" : \"PUSH\";\n\t\t\t\tthis.history[historyAction === \"REPLACE\" ? \"replace\" : \"push\"](nextHistory.publicHref, nextHistory.state, { ignoreBlocker });\n\t\t\t}\n\t\t\tthis._scroll.next = next.resetScroll ?? true;\n\t\t\tif (!this.history.subscribers.size) this.load(historyAction ? { action: { type: historyAction } } : void 0);\n\t\t\treturn this.commitLocationPromise;\n\t\t};\n\t\tthis.buildAndCommitLocation = ({ replace, resetScroll, hashScrollIntoView, viewTransition, ignoreBlocker, href, ...rest } = {}) => {\n\t\t\tif (href) {\n\t\t\t\tconst currentIndex = this.history.location.state.__TSR_index;\n\t\t\t\tconst parsed = parseHref(href, { __TSR_index: replace ? currentIndex : currentIndex + 1 });\n\t\t\t\tconst hrefUrl = new URL(parsed.pathname, this.origin);\n\t\t\t\trest.to = executeRewriteInput(this.rewrite, hrefUrl).pathname;\n\t\t\t\trest.search = this.options.parseSearch(parsed.search);\n\t\t\t\trest.hash = parsed.hash.slice(1);\n\t\t\t}\n\t\t\tconst location = this.buildLocation({\n\t\t\t\t...rest,\n\t\t\t\t_includeValidateSearch: true\n\t\t\t});\n\t\t\tthis.pendingBuiltLocation = location;\n\t\t\tconst commitPromise = this.commitLocation({\n\t\t\t\t...location,\n\t\t\t\tviewTransition,\n\t\t\t\treplace,\n\t\t\t\tresetScroll,\n\t\t\t\thashScrollIntoView,\n\t\t\t\tignoreBlocker\n\t\t\t});\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tif (this.pendingBuiltLocation === location) this.pendingBuiltLocation = void 0;\n\t\t\t});\n\t\t\treturn commitPromise;\n\t\t};\n\t\tthis.navigate = async ({ to, reloadDocument, href, publicHref, ...rest }) => {\n\t\t\tlet hrefIsUrl = false;\n\t\t\tif (href) try {\n\t\t\t\tnew URL(`${href}`);\n\t\t\t\threfIsUrl = true;\n\t\t\t} catch {}\n\t\t\tif (hrefIsUrl && !reloadDocument) reloadDocument = true;\n\t\t\tif (reloadDocument) {\n\t\t\t\tif (to !== void 0 || !href) {\n\t\t\t\t\tconst location = this.buildLocation({\n\t\t\t\t\t\tto,\n\t\t\t\t\t\t...rest\n\t\t\t\t\t});\n\t\t\t\t\thref = href ?? location.publicHref;\n\t\t\t\t\tpublicHref = publicHref ?? location.publicHref;\n\t\t\t\t}\n\t\t\t\tconst reloadHref = !hrefIsUrl && publicHref ? publicHref : href;\n\t\t\t\tif (isDangerousProtocol(reloadHref, this.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked navigation to dangerous protocol: ${reloadHref}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!rest.ignoreBlocker) {\n\t\t\t\t\tconst blockers = this.history.getBlockers?.() ?? [];\n\t\t\t\t\tfor (const blocker of blockers) if (blocker?.blockerFn) {\n\t\t\t\t\t\tif (await blocker.blockerFn({\n\t\t\t\t\t\t\tcurrentLocation: this.latestLocation,\n\t\t\t\t\t\t\tnextLocation: this.latestLocation,\n\t\t\t\t\t\t\taction: \"PUSH\"\n\t\t\t\t\t\t})) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (rest.replace) window.location.replace(reloadHref);\n\t\t\t\telse window.location.href = reloadHref;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn this.buildAndCommitLocation({\n\t\t\t\t...rest,\n\t\t\t\thref,\n\t\t\t\tto,\n\t\t\t\t_isNavigate: true\n\t\t\t});\n\t\t};\n\t\tthis.beforeLoad = () => {\n\t\t\tthis.cancelMatches();\n\t\t\tthis.updateLatestLocation();\n\t\t\tif (isServer ?? this.isServer) {\n\t\t\t\tconst nextLocation = this.buildLocation({\n\t\t\t\t\tto: this.latestLocation.pathname,\n\t\t\t\t\tsearch: true,\n\t\t\t\t\tparams: true,\n\t\t\t\t\thash: true,\n\t\t\t\t\tstate: true,\n\t\t\t\t\t_includeValidateSearch: true\n\t\t\t\t});\n\t\t\t\tif (this.latestLocation.publicHref !== nextLocation.publicHref) {\n\t\t\t\t\tconst href = this.getParsedLocationHref(nextLocation);\n\t\t\t\t\tif (nextLocation.external) throw redirect({ href });\n\t\t\t\t\telse throw redirect({\n\t\t\t\t\t\thref,\n\t\t\t\t\t\t_builtLocation: nextLocation\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst pendingMatches = this.matchRoutes(this.latestLocation);\n\t\t\tconst nextCachedMatches = this.stores.cachedMatches.get().filter((d) => !pendingMatches.some((e) => e.id === d.id));\n\t\t\tthis.batch(() => {\n\t\t\t\tthis.stores.status.set(\"pending\");\n\t\t\t\tthis.stores.statusCode.set(200);\n\t\t\t\tthis.stores.isLoading.set(true);\n\t\t\t\tthis.stores.location.set(this.latestLocation);\n\t\t\t\tthis.stores.setPending(pendingMatches);\n\t\t\t\tthis.stores.setCached(nextCachedMatches);\n\t\t\t});\n\t\t};\n\t\tthis.load = async (opts) => {\n\t\t\tconst historyAction = opts?.action?.type;\n\t\t\tlet redirect;\n\t\t\tlet notFound;\n\t\t\tlet loadPromise;\n\t\t\tconst previousLocation = this.stores.resolvedLocation.get() ?? this.stores.location.get();\n\t\t\tloadPromise = new Promise((resolve) => {\n\t\t\t\tthis.startTransition(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.beforeLoad();\n\t\t\t\t\t\tif (historyAction) locationHistoryActions.set(this.latestLocation, historyAction);\n\t\t\t\t\t\telse locationHistoryActions.delete(this.latestLocation);\n\t\t\t\t\t\tconst next = this.latestLocation;\n\t\t\t\t\t\tconst locationChangeInfo = getLocationChangeInfo(next, this.stores.resolvedLocation.get());\n\t\t\t\t\t\tif (!this.stores.redirect.get()) this.emit({\n\t\t\t\t\t\t\ttype: \"onBeforeNavigate\",\n\t\t\t\t\t\t\t...locationChangeInfo\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.emit({\n\t\t\t\t\t\t\ttype: \"onBeforeLoad\",\n\t\t\t\t\t\t\t...locationChangeInfo\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait loadMatches({\n\t\t\t\t\t\t\trouter: this,\n\t\t\t\t\t\t\tsync: opts?.sync,\n\t\t\t\t\t\t\tforceStaleReload: previousLocation.href === next.href,\n\t\t\t\t\t\t\tmatches: this.stores.pendingMatches.get(),\n\t\t\t\t\t\t\tlocation: next,\n\t\t\t\t\t\t\tupdateMatch: this.updateMatch,\n\t\t\t\t\t\t\tonReady: async () => {\n\t\t\t\t\t\t\t\tthis.startTransition(() => {\n\t\t\t\t\t\t\t\t\tthis.startViewTransition(async () => {\n\t\t\t\t\t\t\t\t\t\tlet exitingMatches = null;\n\t\t\t\t\t\t\t\t\t\tlet hookExitingMatches = null;\n\t\t\t\t\t\t\t\t\t\tlet hookEnteringMatches = null;\n\t\t\t\t\t\t\t\t\t\tlet hookStayingMatches = null;\n\t\t\t\t\t\t\t\t\t\tthis.batch(() => {\n\t\t\t\t\t\t\t\t\t\t\tconst pendingMatches = this.stores.pendingMatches.get();\n\t\t\t\t\t\t\t\t\t\t\tconst mountPending = pendingMatches.length;\n\t\t\t\t\t\t\t\t\t\t\tconst currentMatches = this.stores.matches.get();\n\t\t\t\t\t\t\t\t\t\t\texitingMatches = mountPending ? currentMatches.filter((match) => !this.stores.pendingMatchStores.has(match.id)) : null;\n\t\t\t\t\t\t\t\t\t\t\tconst pendingRouteIds = /* @__PURE__ */ new Set();\n\t\t\t\t\t\t\t\t\t\t\tfor (const s of this.stores.pendingMatchStores.values()) if (s.routeId) pendingRouteIds.add(s.routeId);\n\t\t\t\t\t\t\t\t\t\t\tconst activeRouteIds = /* @__PURE__ */ new Set();\n\t\t\t\t\t\t\t\t\t\t\tfor (const s of this.stores.matchStores.values()) if (s.routeId) activeRouteIds.add(s.routeId);\n\t\t\t\t\t\t\t\t\t\t\thookExitingMatches = mountPending ? currentMatches.filter((match) => !pendingRouteIds.has(match.routeId)) : null;\n\t\t\t\t\t\t\t\t\t\t\thookEnteringMatches = mountPending ? pendingMatches.filter((match) => !activeRouteIds.has(match.routeId)) : null;\n\t\t\t\t\t\t\t\t\t\t\thookStayingMatches = mountPending ? pendingMatches.filter((match) => activeRouteIds.has(match.routeId)) : currentMatches;\n\t\t\t\t\t\t\t\t\t\t\tthis.stores.isLoading.set(false);\n\t\t\t\t\t\t\t\t\t\t\tthis.stores.loadedAt.set(Date.now());\n\t\t\t\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t\t\t\t* When committing new matches, cache any exiting matches that are still usable.\n\t\t\t\t\t\t\t\t\t\t\t* Routes that resolved with `status: 'error'` or `status: 'notFound'` are\n\t\t\t\t\t\t\t\t\t\t\t* deliberately excluded from `cachedMatches` so that subsequent invalidations\n\t\t\t\t\t\t\t\t\t\t\t* or reloads re-run their loaders instead of reusing the failed/not-found data.\n\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\t\t\t\tif (mountPending) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.stores.setMatches(pendingMatches);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.stores.setPending([]);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.stores.setCached([...this.stores.cachedMatches.get(), ...exitingMatches.filter((d) => d.status !== \"error\" && d.status !== \"notFound\" && d.status !== \"redirected\")]);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.clearExpiredCache();\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\tfor (const [matches, hook] of [\n\t\t\t\t\t\t\t\t\t\t\t[hookExitingMatches, \"onLeave\"],\n\t\t\t\t\t\t\t\t\t\t\t[hookEnteringMatches, \"onEnter\"],\n\t\t\t\t\t\t\t\t\t\t\t[hookStayingMatches, \"onStay\"]\n\t\t\t\t\t\t\t\t\t\t]) {\n\t\t\t\t\t\t\t\t\t\t\tif (!matches) continue;\n\t\t\t\t\t\t\t\t\t\t\tfor (const match of matches) this.looseRoutesById[match.routeId].options[hook]?.(match);\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});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tif (isRedirect(err)) {\n\t\t\t\t\t\t\tredirect = err;\n\t\t\t\t\t\t\tif (!(isServer ?? this.isServer)) this.navigate({\n\t\t\t\t\t\t\t\t...redirect.options,\n\t\t\t\t\t\t\t\treplace: true,\n\t\t\t\t\t\t\t\tignoreBlocker: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (isNotFound(err)) notFound = err;\n\t\t\t\t\t\tconst nextStatusCode = redirect ? redirect.status : notFound ? 404 : this.stores.matches.get().some((d) => d.status === \"error\") ? 500 : 200;\n\t\t\t\t\t\tthis.batch(() => {\n\t\t\t\t\t\t\tthis.stores.statusCode.set(nextStatusCode);\n\t\t\t\t\t\t\tthis.stores.redirect.set(redirect);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (this.latestLoadPromise === loadPromise) {\n\t\t\t\t\t\tthis.commitLocationPromise?.resolve();\n\t\t\t\t\t\tthis.latestLoadPromise = void 0;\n\t\t\t\t\t\tthis.commitLocationPromise = void 0;\n\t\t\t\t\t}\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis.latestLoadPromise = loadPromise;\n\t\t\tawait loadPromise;\n\t\t\twhile (this.latestLoadPromise && loadPromise !== this.latestLoadPromise) await this.latestLoadPromise;\n\t\t\tlet newStatusCode = void 0;\n\t\t\tif (this.hasNotFoundMatch()) newStatusCode = 404;\n\t\t\telse if (this.stores.matches.get().some((d) => d.status === \"error\")) newStatusCode = 500;\n\t\t\tif (newStatusCode !== void 0) this.stores.statusCode.set(newStatusCode);\n\t\t};\n\t\tthis.startViewTransition = (fn) => {\n\t\t\tconst shouldViewTransition = this.shouldViewTransition ?? this.options.defaultViewTransition;\n\t\t\tthis.shouldViewTransition = void 0;\n\t\t\tif (shouldViewTransition && typeof document !== \"undefined\" && \"startViewTransition\" in document && typeof document.startViewTransition === \"function\") {\n\t\t\t\tlet startViewTransitionParams;\n\t\t\t\tif (typeof shouldViewTransition === \"object\" && this.isViewTransitionTypesSupported) {\n\t\t\t\t\tconst next = this.latestLocation;\n\t\t\t\t\tconst prevLocation = this.stores.resolvedLocation.get();\n\t\t\t\t\tconst resolvedViewTransitionTypes = typeof shouldViewTransition.types === \"function\" ? shouldViewTransition.types(getLocationChangeInfo(next, prevLocation)) : shouldViewTransition.types;\n\t\t\t\t\tif (resolvedViewTransitionTypes === false) {\n\t\t\t\t\t\tfn();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tstartViewTransitionParams = {\n\t\t\t\t\t\tupdate: fn,\n\t\t\t\t\t\ttypes: resolvedViewTransitionTypes\n\t\t\t\t\t};\n\t\t\t\t} else startViewTransitionParams = fn;\n\t\t\t\tdocument.startViewTransition(startViewTransitionParams);\n\t\t\t} else fn();\n\t\t};\n\t\tthis.updateMatch = (id, updater) => {\n\t\t\tthis.startTransition(() => {\n\t\t\t\tconst pendingMatch = this.stores.pendingMatchStores.get(id);\n\t\t\t\tif (pendingMatch) {\n\t\t\t\t\tpendingMatch.set(updater);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst activeMatch = this.stores.matchStores.get(id);\n\t\t\t\tif (activeMatch) {\n\t\t\t\t\tactiveMatch.set(updater);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst cachedMatch = this.stores.cachedMatchStores.get(id);\n\t\t\t\tif (cachedMatch) {\n\t\t\t\t\tconst next = updater(cachedMatch.get());\n\t\t\t\t\tif (next.status === \"redirected\") {\n\t\t\t\t\t\tif (this.stores.cachedMatchStores.delete(id)) this.stores.cachedIds.set((prev) => prev.filter((matchId) => matchId !== id));\n\t\t\t\t\t} else cachedMatch.set(next);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tthis.getMatch = (matchId) => {\n\t\t\treturn this.stores.cachedMatchStores.get(matchId)?.get() ?? this.stores.pendingMatchStores.get(matchId)?.get() ?? this.stores.matchStores.get(matchId)?.get();\n\t\t};\n\t\tthis.invalidate = (opts) => {\n\t\t\tconst invalidate = (d) => {\n\t\t\t\tif (opts?.filter?.(d) ?? true) return {\n\t\t\t\t\t...d,\n\t\t\t\t\tinvalid: true,\n\t\t\t\t\t...opts?.forcePending || d.status === \"error\" || d.status === \"notFound\" ? {\n\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\terror: void 0\n\t\t\t\t\t} : void 0\n\t\t\t\t};\n\t\t\t\treturn d;\n\t\t\t};\n\t\t\tthis.batch(() => {\n\t\t\t\tthis.stores.setMatches(this.stores.matches.get().map(invalidate));\n\t\t\t\tthis.stores.setCached(this.stores.cachedMatches.get().map(invalidate));\n\t\t\t\tthis.stores.setPending(this.stores.pendingMatches.get().map(invalidate));\n\t\t\t});\n\t\t\tthis.shouldViewTransition = false;\n\t\t\treturn this.load({ sync: opts?.sync });\n\t\t};\n\t\tthis.getParsedLocationHref = (location) => {\n\t\t\treturn location.publicHref || \"/\";\n\t\t};\n\t\tthis.resolveRedirect = (redirect) => {\n\t\t\tconst locationHeader = redirect.headers.get(\"Location\");\n\t\t\tif (!redirect.options.href || redirect.options._builtLocation) {\n\t\t\t\tconst location = redirect.options._builtLocation ?? this.buildLocation(redirect.options);\n\t\t\t\tconst href = this.getParsedLocationHref(location);\n\t\t\t\tredirect.options.href = href;\n\t\t\t\tredirect.headers.set(\"Location\", href);\n\t\t\t} else if (locationHeader) try {\n\t\t\t\tconst url = new URL(locationHeader);\n\t\t\t\tif (this.origin && url.origin === this.origin) {\n\t\t\t\t\tconst href = url.pathname + url.search + url.hash;\n\t\t\t\t\tredirect.options.href = href;\n\t\t\t\t\tredirect.headers.set(\"Location\", href);\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\tif (redirect.options.href && !redirect.options._builtLocation && isDangerousProtocol(redirect.options.href, this.protocolAllowlist)) throw new Error(process.env.NODE_ENV !== \"production\" ? `Redirect blocked: unsafe protocol in href \"${redirect.options.href}\". Allowed protocols: ${Array.from(this.protocolAllowlist).join(\", \")}.` : \"Redirect blocked: unsafe protocol\");\n\t\t\tif (!redirect.headers.get(\"Location\")) redirect.headers.set(\"Location\", redirect.options.href);\n\t\t\treturn redirect;\n\t\t};\n\t\tthis.clearCache = (opts) => {\n\t\t\tconst filter = opts?.filter;\n\t\t\tif (filter !== void 0) this.stores.setCached(this.stores.cachedMatches.get().filter((m) => !filter(m)));\n\t\t\telse this.stores.setCached([]);\n\t\t};\n\t\tthis.clearExpiredCache = () => {\n\t\t\tconst now = Date.now();\n\t\t\tconst filter = (d) => {\n\t\t\t\tconst route = this.looseRoutesById[d.routeId];\n\t\t\t\tif (!route.options.loader) return true;\n\t\t\t\tconst gcTime = (d.preload ? route.options.preloadGcTime ?? this.options.defaultPreloadGcTime : route.options.gcTime ?? this.options.defaultGcTime) ?? 300 * 1e3;\n\t\t\t\tif (d.status === \"error\") return true;\n\t\t\t\treturn now - d.updatedAt >= gcTime;\n\t\t\t};\n\t\t\tthis.clearCache({ filter });\n\t\t};\n\t\tthis.loadRouteChunk = loadRouteChunk;\n\t\tthis.preloadRoute = async (opts) => {\n\t\t\tconst next = opts._builtLocation ?? this.buildLocation(opts);\n\t\t\tlet matches = this.matchRoutes(next, {\n\t\t\t\tthrowOnError: true,\n\t\t\t\tpreload: true,\n\t\t\t\tdest: opts\n\t\t\t});\n\t\t\tconst activeMatchIds = new Set([...this.stores.matchesId.get(), ...this.stores.pendingIds.get()]);\n\t\t\tconst loadedMatchIds = new Set([...activeMatchIds, ...this.stores.cachedIds.get()]);\n\t\t\tconst matchesToCache = matches.filter((match) => !loadedMatchIds.has(match.id));\n\t\t\tif (matchesToCache.length) {\n\t\t\t\tconst cachedMatches = this.stores.cachedMatches.get();\n\t\t\t\tthis.stores.setCached([...cachedMatches, ...matchesToCache]);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmatches = await loadMatches({\n\t\t\t\t\trouter: this,\n\t\t\t\t\tmatches,\n\t\t\t\t\tlocation: next,\n\t\t\t\t\tpreload: true,\n\t\t\t\t\tupdateMatch: (id, updater) => {\n\t\t\t\t\t\tif (activeMatchIds.has(id)) matches = matches.map((d) => d.id === id ? updater(d) : d);\n\t\t\t\t\t\telse this.updateMatch(id, updater);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn matches;\n\t\t\t} catch (err) {\n\t\t\t\tif (isRedirect(err)) {\n\t\t\t\t\tif (err.options.reloadDocument) return;\n\t\t\t\t\treturn await this.preloadRoute({\n\t\t\t\t\t\t...err.options,\n\t\t\t\t\t\t_fromLocation: next\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (!isNotFound(err)) console.error(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\t\tthis.matchRoute = (location, opts) => {\n\t\t\tconst matchLocation = {\n\t\t\t\t...location,\n\t\t\t\tto: location.to ? this.resolvePathWithBase(location.from || \"\", location.to) : void 0,\n\t\t\t\tparams: location.params || {},\n\t\t\t\tleaveParams: true\n\t\t\t};\n\t\t\tconst next = this.buildLocation(matchLocation);\n\t\t\tif (opts?.pending && this.stores.status.get() !== \"pending\") return false;\n\t\t\tconst baseLocation = (opts?.pending === void 0 ? !this.stores.isLoading.get() : opts.pending) ? this.latestLocation : this.stores.resolvedLocation.get() || this.stores.location.get();\n\t\t\tconst match = findSingleMatch(next.pathname, opts?.caseSensitive ?? false, opts?.fuzzy ?? false, baseLocation.pathname, this.processedTree);\n\t\t\tif (!match) return false;\n\t\t\tif (location.params) {\n\t\t\t\tif (!deepEqual(match.rawParams, location.params, { partial: true })) return false;\n\t\t\t}\n\t\t\tif (opts?.includeSearch ?? true) return deepEqual(baseLocation.search, next.search, { partial: true }) ? match.rawParams : false;\n\t\t\treturn match.rawParams;\n\t\t};\n\t\tthis.hasNotFoundMatch = () => {\n\t\t\treturn this.stores.matches.get().some((d) => d.status === \"notFound\" || d.globalNotFound);\n\t\t};\n\t\tthis.getStoreConfig = getStoreConfig;\n\t\tthis.update({\n\t\t\tdefaultPreloadDelay: 50,\n\t\t\tdefaultPendingMs: 1e3,\n\t\t\tdefaultPendingMinMs: 500,\n\t\t\tcontext: void 0,\n\t\t\t...options,\n\t\t\tcaseSensitive: options.caseSensitive ?? false,\n\t\t\tnotFoundMode: options.notFoundMode ?? \"fuzzy\",\n\t\t\tstringifySearch: options.stringifySearch ?? defaultStringifySearch,\n\t\t\tparseSearch: options.parseSearch ?? defaultParseSearch,\n\t\t\tprotocolAllowlist: options.protocolAllowlist ?? DEFAULT_PROTOCOL_ALLOWLIST\n\t\t});\n\t\tif (typeof document !== \"undefined\") self.__TSR_ROUTER__ = this;\n\t}\n\tisShell() {\n\t\treturn !!this.options.isShell;\n\t}\n\tisPrerendering() {\n\t\treturn !!this.options.isPrerendering;\n\t}\n\tget state() {\n\t\treturn this.stores.__store.get();\n\t}\n\tsetRoutes({ routesById, routesByPath, processedTree }) {\n\t\tthis.routesById = routesById;\n\t\tthis.routesByPath = routesByPath;\n\t\tthis.processedTree = processedTree;\n\t\tconst notFoundRoute = this.options.notFoundRoute;\n\t\tif (notFoundRoute) {\n\t\t\tnotFoundRoute.init({ originalIndex: 99999999999 });\n\t\t\tthis.routesById[notFoundRoute.id] = notFoundRoute;\n\t\t}\n\t}\n\tgetRouteBranch(route) {\n\t\tlet branch = this.routeBranchCache.get(route);\n\t\tif (!branch) {\n\t\t\tbranch = buildRouteBranch(route);\n\t\t\tthis.routeBranchCache.set(route, branch);\n\t\t}\n\t\treturn branch;\n\t}\n\tget looseRoutesById() {\n\t\treturn this.routesById;\n\t}\n\tgetParentContext(parentMatch) {\n\t\treturn !parentMatch?.id ? this.options.context ?? void 0 : parentMatch.context ?? this.options.context ?? void 0;\n\t}\n\tmatchRoutesInternal(next, opts) {\n\t\tconst matchedRoutesResult = this.getMatchedRoutes(next.pathname);\n\t\tconst { foundRoute, routeParams } = matchedRoutesResult;\n\t\tlet { matchedRoutes } = matchedRoutesResult;\n\t\tlet isGlobalNotFound = false;\n\t\tif (foundRoute ? foundRoute.path !== \"/\" && routeParams[\"**\"] : trimPathRight(next.pathname)) if (this.options.notFoundRoute) matchedRoutes = [...matchedRoutes, this.options.notFoundRoute];\n\t\telse isGlobalNotFound = true;\n\t\tconst globalNotFoundRouteId = isGlobalNotFound ? findGlobalNotFoundRouteId(this.options.notFoundMode, matchedRoutes) : void 0;\n\t\tconst matches = new Array(matchedRoutes.length);\n\t\tconst previousActiveMatchesByRouteId = /* @__PURE__ */ new Map();\n\t\tfor (const store of this.stores.matchStores.values()) if (store.routeId) previousActiveMatchesByRouteId.set(store.routeId, store.get());\n\t\tfor (let index = 0; index < matchedRoutes.length; index++) {\n\t\t\tconst route = matchedRoutes[index];\n\t\t\tconst parentMatch = matches[index - 1];\n\t\t\tlet preMatchSearch;\n\t\t\tlet strictMatchSearch;\n\t\t\tlet searchError;\n\t\t\t{\n\t\t\t\tconst parentSearch = parentMatch?.search ?? next.search;\n\t\t\t\tconst parentStrictSearch = parentMatch?._strictSearch ?? void 0;\n\t\t\t\ttry {\n\t\t\t\t\tconst strictSearch = validateSearch(route.options.validateSearch, { ...parentSearch }) ?? void 0;\n\t\t\t\t\tpreMatchSearch = {\n\t\t\t\t\t\t...parentSearch,\n\t\t\t\t\t\t...strictSearch\n\t\t\t\t\t};\n\t\t\t\t\tstrictMatchSearch = {\n\t\t\t\t\t\t...parentStrictSearch,\n\t\t\t\t\t\t...strictSearch\n\t\t\t\t\t};\n\t\t\t\t\tsearchError = void 0;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlet searchParamError = err;\n\t\t\t\t\tif (!(err instanceof SearchParamError)) searchParamError = new SearchParamError(err.message, { cause: err });\n\t\t\t\t\tif (opts?.throwOnError) throw searchParamError;\n\t\t\t\t\tpreMatchSearch = parentSearch;\n\t\t\t\t\tstrictMatchSearch = {};\n\t\t\t\t\tsearchError = searchParamError;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst loaderDeps = route.options.loaderDeps?.({ search: preMatchSearch }) ?? \"\";\n\t\t\tconst loaderDepsHash = loaderDeps ? JSON.stringify(loaderDeps) : \"\";\n\t\t\tconst { interpolatedPath, usedParams } = interpolatePath({\n\t\t\t\tpath: route.fullPath,\n\t\t\t\tparams: routeParams,\n\t\t\t\tdecoder: this.pathParamsDecoder,\n\t\t\t\tserver: this.isServer\n\t\t\t});\n\t\t\tconst matchId = route.id + interpolatedPath + loaderDepsHash;\n\t\t\tconst existingMatch = this.getMatch(matchId);\n\t\t\tconst previousMatch = previousActiveMatchesByRouteId.get(route.id);\n\t\t\tconst strictParams = existingMatch?._strictParams ?? usedParams;\n\t\t\tlet paramsError = void 0;\n\t\t\tif (!existingMatch) try {\n\t\t\t\textractStrictParams(route, strictParams);\n\t\t\t} catch (err) {\n\t\t\t\tif (isNotFound(err) || isRedirect(err)) paramsError = err;\n\t\t\t\telse paramsError = new PathParamError(err.message, { cause: err });\n\t\t\t\tif (opts?.throwOnError) throw paramsError;\n\t\t\t}\n\t\t\tObject.assign(routeParams, strictParams);\n\t\t\tconst cause = previousMatch ? \"stay\" : \"enter\";\n\t\t\tlet match;\n\t\t\tif (existingMatch) match = {\n\t\t\t\t...existingMatch,\n\t\t\t\tcause,\n\t\t\t\tparams: previousMatch?.params ?? routeParams,\n\t\t\t\t_strictParams: strictParams,\n\t\t\t\tsearch: previousMatch ? nullReplaceEqualDeep(previousMatch.search, preMatchSearch) : nullReplaceEqualDeep(existingMatch.search, preMatchSearch),\n\t\t\t\t_strictSearch: strictMatchSearch\n\t\t\t};\n\t\t\telse {\n\t\t\t\tconst status = route.options.loader || route.options.beforeLoad || route.lazyFn || routeNeedsPreload(route) ? \"pending\" : \"success\";\n\t\t\t\tmatch = {\n\t\t\t\t\tid: matchId,\n\t\t\t\t\tssr: isServer ?? this.isServer ? void 0 : route.options.ssr,\n\t\t\t\t\tindex,\n\t\t\t\t\trouteId: route.id,\n\t\t\t\t\tparams: previousMatch?.params ?? routeParams,\n\t\t\t\t\t_strictParams: strictParams,\n\t\t\t\t\tpathname: interpolatedPath,\n\t\t\t\t\tupdatedAt: Date.now(),\n\t\t\t\t\tsearch: previousMatch ? nullReplaceEqualDeep(previousMatch.search, preMatchSearch) : preMatchSearch,\n\t\t\t\t\t_strictSearch: strictMatchSearch,\n\t\t\t\t\tsearchError: void 0,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisFetching: false,\n\t\t\t\t\terror: void 0,\n\t\t\t\t\tparamsError,\n\t\t\t\t\t__routeContext: void 0,\n\t\t\t\t\t_nonReactive: { loadPromise: createControlledPromise() },\n\t\t\t\t\t__beforeLoadContext: void 0,\n\t\t\t\t\tcontext: {},\n\t\t\t\t\tabortController: new AbortController(),\n\t\t\t\t\tfetchCount: 0,\n\t\t\t\t\tcause,\n\t\t\t\t\tloaderDeps: previousMatch ? replaceEqualDeep(previousMatch.loaderDeps, loaderDeps) : loaderDeps,\n\t\t\t\t\tinvalid: false,\n\t\t\t\t\tpreload: false,\n\t\t\t\t\tlinks: void 0,\n\t\t\t\t\tscripts: void 0,\n\t\t\t\t\theadScripts: void 0,\n\t\t\t\t\tmeta: void 0,\n\t\t\t\t\tstaticData: route.options.staticData || {},\n\t\t\t\t\tfullPath: route.fullPath\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!opts?.preload) match.globalNotFound = globalNotFoundRouteId === route.id;\n\t\t\tmatch.searchError = searchError;\n\t\t\tconst parentContext = this.getParentContext(parentMatch);\n\t\t\tmatch.context = {\n\t\t\t\t...parentContext,\n\t\t\t\t...match.__routeContext,\n\t\t\t\t...match.__beforeLoadContext\n\t\t\t};\n\t\t\tmatches[index] = match;\n\t\t}\n\t\tfor (let index = 0; index < matches.length; index++) {\n\t\t\tconst match = matches[index];\n\t\t\tconst route = this.looseRoutesById[match.routeId];\n\t\t\tconst existingMatch = this.getMatch(match.id);\n\t\t\tconst previousMatch = previousActiveMatchesByRouteId.get(match.routeId);\n\t\t\tmatch.params = previousMatch ? nullReplaceEqualDeep(previousMatch.params, routeParams) : routeParams;\n\t\t\tif (!existingMatch) {\n\t\t\t\tconst parentMatch = matches[index - 1];\n\t\t\t\tconst parentContext = this.getParentContext(parentMatch);\n\t\t\t\tif (route.options.context) {\n\t\t\t\t\tconst contextFnContext = {\n\t\t\t\t\t\tdeps: match.loaderDeps,\n\t\t\t\t\t\tparams: match.params,\n\t\t\t\t\t\tcontext: parentContext ?? {},\n\t\t\t\t\t\tlocation: next,\n\t\t\t\t\t\tnavigate: (opts) => this.navigate({\n\t\t\t\t\t\t\t...opts,\n\t\t\t\t\t\t\t_fromLocation: next\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tbuildLocation: this.buildLocation,\n\t\t\t\t\t\tcause: match.cause,\n\t\t\t\t\t\tabortController: match.abortController,\n\t\t\t\t\t\tpreload: !!match.preload,\n\t\t\t\t\t\tmatches,\n\t\t\t\t\t\trouteId: route.id\n\t\t\t\t\t};\n\t\t\t\t\tmatch.__routeContext = route.options.context(contextFnContext) ?? void 0;\n\t\t\t\t}\n\t\t\t\tmatch.context = {\n\t\t\t\t\t...parentContext,\n\t\t\t\t\t...match.__routeContext,\n\t\t\t\t\t...match.__beforeLoadContext\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn matches;\n\t}\n\t/**\n\t* Lightweight route matching for buildLocation.\n\t* Only computes fullPath, accumulated search, and params - skipping expensive\n\t* operations like AbortController, ControlledPromise, loaderDeps, and full match objects.\n\t*/\n\tmatchRoutesLightweight(location) {\n\t\tconst lastStateMatchId = last(this.stores.matchesId.get());\n\t\tconst cached = this.lightweightCache.get(location);\n\t\tif (cached && cached[0] === lastStateMatchId) return cached[1];\n\t\tconst { matchedRoutes, routeParams } = this.getMatchedRoutes(location.pathname);\n\t\tconst lastRoute = last(matchedRoutes);\n\t\tconst accumulatedSearch = { ...location.search };\n\t\tfor (const route of matchedRoutes) try {\n\t\t\tObject.assign(accumulatedSearch, validateSearch(route.options.validateSearch, accumulatedSearch));\n\t\t} catch {}\n\t\tconst lastStateMatch = lastStateMatchId && this.stores.matchStores.get(lastStateMatchId)?.get();\n\t\tconst canReuseParams = lastStateMatch && lastStateMatch.routeId === lastRoute.id && lastStateMatch.pathname === location.pathname;\n\t\tlet params;\n\t\tif (canReuseParams) params = lastStateMatch.params;\n\t\telse {\n\t\t\tconst strictParams = Object.assign(Object.create(null), routeParams);\n\t\t\tfor (const route of matchedRoutes) try {\n\t\t\t\textractStrictParams(route, strictParams);\n\t\t\t} catch {}\n\t\t\tparams = strictParams;\n\t\t}\n\t\tconst result = {\n\t\t\tmatchedRoutes,\n\t\t\tfullPath: lastRoute.fullPath,\n\t\t\tsearch: accumulatedSearch,\n\t\t\tparams\n\t\t};\n\t\tthis.lightweightCache.set(location, [lastStateMatchId, result]);\n\t\treturn result;\n\t}\n};\n/** Error thrown when search parameter validation fails. */\nvar SearchParamError = class extends Error {};\n/** Error thrown when path parameter parsing/validation fails. */\nvar PathParamError = class extends Error {};\nconst normalize = (str) => str.endsWith(\"/\") && str.length > 1 ? str.slice(0, -1) : str;\nfunction comparePaths(a, b) {\n\treturn normalize(a) === normalize(b);\n}\n/**\n* Lazily import a module function and forward arguments to it, retaining\n* parameter and return types for the selected export key.\n*/\nfunction lazyFn(fn, key) {\n\treturn async (...args) => {\n\t\treturn (await fn())[key || \"default\"](...args);\n\t};\n}\n/** Create an initial RouterState from a parsed location. */\nfunction getInitialRouterState(location) {\n\treturn {\n\t\tloadedAt: 0,\n\t\tisLoading: false,\n\t\tisTransitioning: false,\n\t\tstatus: \"idle\",\n\t\tresolvedLocation: void 0,\n\t\tlocation,\n\t\tmatches: [],\n\t\tstatusCode: 200\n\t};\n}\nfunction validateSearch(validateSearch, input) {\n\tif (validateSearch == null) return {};\n\tif (\"~standard\" in validateSearch) {\n\t\tconst result = validateSearch[\"~standard\"].validate(input);\n\t\tif (result instanceof Promise) throw new SearchParamError(\"Async validation not supported\");\n\t\tif (result.issues) throw new SearchParamError(JSON.stringify(result.issues, void 0, 2), { cause: result });\n\t\treturn result.value;\n\t}\n\tif (\"parse\" in validateSearch) return validateSearch.parse(input);\n\tif (typeof validateSearch === \"function\") return validateSearch(input);\n\treturn {};\n}\n/**\n* Build the matched route chain and extract params for a pathname.\n* Falls back to the root route if no specific route is found.\n*/\nfunction getMatchedRoutes({ pathname, routesById, processedTree }) {\n\tconst routeParams = Object.create(null);\n\tconst trimmedPath = trimPathRight(pathname);\n\tlet foundRoute = void 0;\n\tconst match = findRouteMatch(trimmedPath, processedTree, true);\n\tif (match) {\n\t\tfoundRoute = match.route;\n\t\tObject.assign(routeParams, match.rawParams);\n\t}\n\treturn {\n\t\tmatchedRoutes: match?.branch || [routesById[\"__root__\"]],\n\t\trouteParams,\n\t\tfoundRoute\n\t};\n}\n/**\n* TODO: once caches are persisted across requests on the server,\n* we can cache the built middleware chain using `last(destRoutes)` as the key\n*/\nfunction applySearchMiddleware({ search, dest, destRoutes, _includeValidateSearch }) {\n\treturn buildMiddlewareChain(destRoutes)(search, dest, _includeValidateSearch ?? false);\n}\nfunction buildMiddlewareChain(destRoutes) {\n\tlet dest;\n\tlet includeValidateSearch;\n\tconst middlewares = [];\n\tfor (const route of destRoutes) {\n\t\tconst routeOptions = route.options;\n\t\tif (\"search\" in routeOptions) {\n\t\t\tif (routeOptions.search?.middlewares) middlewares.push(...routeOptions.search.middlewares);\n\t\t} else if (routeOptions.preSearchFilters || routeOptions.postSearchFilters) {\n\t\t\tconst legacyMiddleware = ({ search, next }) => {\n\t\t\t\tconst result = next(routeOptions.preSearchFilters ? routeOptions.preSearchFilters.reduce((prev, next) => next(prev), search) : search);\n\t\t\t\treturn routeOptions.postSearchFilters ? routeOptions.postSearchFilters.reduce((prev, next) => next(prev), result) : result;\n\t\t\t};\n\t\t\tmiddlewares.push(legacyMiddleware);\n\t\t}\n\t\tconst routeValidateSearch = routeOptions.validateSearch;\n\t\tif (routeValidateSearch) {\n\t\t\tconst validate = ({ search, next, meta }) => {\n\t\t\t\tconst result = next(search);\n\t\t\t\tif (includeValidateSearch) try {\n\t\t\t\t\tconst validated = validateSearch(routeValidateSearch, result);\n\t\t\t\t\tif (meta && validated) {\n\t\t\t\t\t\tfor (const key in validated) if (!(key in result)) (meta.defaulted ||= /* @__PURE__ */ new Map()).set(key, validated[key]);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t...validated\n\t\t\t\t\t};\n\t\t\t\t} catch {}\n\t\t\t\treturn result;\n\t\t\t};\n\t\t\tmiddlewares.push(validate);\n\t\t}\n\t}\n\tconst applyNext = (index, currentSearch, meta) => {\n\t\tif (index >= middlewares.length) {\n\t\t\tif (!dest.search) return {};\n\t\t\tif (dest.search === true) return currentSearch;\n\t\t\tconst result = functionalUpdate(dest.search, currentSearch);\n\t\t\tif (meta) meta.explicit = result;\n\t\t\treturn result;\n\t\t}\n\t\tconst next = (newSearch, collectMeta) => {\n\t\t\tif (collectMeta) {\n\t\t\t\tconst nextMeta = meta || {};\n\t\t\t\treturn {\n\t\t\t\t\tsearch: applyNext(index + 1, newSearch, nextMeta),\n\t\t\t\t\tmeta: nextMeta\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn applyNext(index + 1, newSearch, meta);\n\t\t};\n\t\treturn middlewares[index]({\n\t\t\tsearch: currentSearch,\n\t\t\tnext,\n\t\t\tmeta\n\t\t});\n\t};\n\treturn function middleware(search, nextDest, _includeValidateSearch) {\n\t\tdest = nextDest;\n\t\tincludeValidateSearch = _includeValidateSearch;\n\t\treturn applyNext(0, search);\n\t};\n}\nfunction findGlobalNotFoundRouteId(notFoundMode, routes) {\n\tif (notFoundMode !== \"root\") for (let i = routes.length - 1; i >= 0; i--) {\n\t\tconst route = routes[i];\n\t\tif (route.children) return route.id;\n\t}\n\treturn rootRouteId;\n}\nfunction extractStrictParams(route, accumulatedParams) {\n\tconst parseParams = route.options.params?.parse ?? route.options.parseParams;\n\tif (parseParams) {\n\t\tconst result = parseParams(accumulatedParams);\n\t\tif (result === false) throw new Error(\"Route params.parse returned false for a matched route\");\n\t\tObject.assign(accumulatedParams, result);\n\t}\n}\n//#endregion\nexport { PathParamError, RouterCore, SearchParamError, defaultSerializeError, getInitialRouterState, getLocationChangeInfo, getMatchedRoutes, lazyFn, locationHistoryActions, trailingSlashOptions };\n\n//# sourceMappingURL=router.js.map","import { locationHistoryActions } from \"./router.js\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/scroll-restoration.ts\nfunction getSafeSessionStorage() {\n\ttry {\n\t\treturn sessionStorage;\n\t} catch {\n\t\treturn;\n\t}\n}\nconst storageKey = \"tsr-scroll-restoration-v1_3\";\nconst safeSessionStorage = getSafeSessionStorage();\nfunction createScrollRestorationCache() {\n\ttry {\n\t\treturn JSON.parse(safeSessionStorage?.getItem(\"tsr-scroll-restoration-v1_3\") || \"{}\");\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction persistScrollRestorationCache() {\n\ttry {\n\t\tsafeSessionStorage?.setItem(storageKey, JSON.stringify(scrollRestorationCache));\n\t} catch {\n\t\tif (process.env.NODE_ENV !== \"production\") console.warn(\"[ts-router] Could not persist scroll restoration state to sessionStorage.\");\n\t}\n}\nconst scrollRestorationCache = /* @__PURE__ */ createScrollRestorationCache();\nconst scrollRestorationIdAttribute = \"data-scroll-restoration-id\";\n/**\n* The default `getKey` function for `useScrollRestoration`.\n* It returns the `key` from the location state or the `href` of the location.\n*\n* The `location.href` is used as a fallback to support the use case where the location state is not available like the initial render.\n*/\nconst defaultGetScrollRestorationKey = (location) => {\n\treturn location.state.__TSR_key || location.href;\n};\nfunction getScrollRestorationSelector(element) {\n\tconst attrId = element.getAttribute(scrollRestorationIdAttribute);\n\tif (attrId) return `[${scrollRestorationIdAttribute}=\"${attrId}\"]`;\n\tlet selector = \"\";\n\tlet el = element;\n\tlet parent;\n\twhile (parent = el.parentNode) {\n\t\tlet index = 1;\n\t\tlet sibling = el;\n\t\twhile (sibling = sibling.previousElementSibling) index++;\n\t\tconst part = `${el.localName}:nth-child(${index})`;\n\t\tselector = selector ? `${part} > ${selector}` : part;\n\t\tel = parent;\n\t}\n\treturn selector;\n}\nfunction getElementScrollRestorationEntry(router, options) {\n\tconst entries = scrollRestorationCache[(options.getKey || defaultGetScrollRestorationKey)(router.latestLocation)];\n\tif (!entries) return;\n\tif (options.id) return entries[`[${scrollRestorationIdAttribute}=\"${options.id}\"]`];\n\tconst element = options.getElement?.();\n\tif (!element) return;\n\treturn entries[element === window ? windowScrollTarget : getScrollRestorationSelector(element)];\n}\nlet ignoreScroll = false;\nconst windowScrollTarget = \"window\";\nfunction getElement(selector) {\n\ttry {\n\t\treturn typeof selector === \"function\" ? selector() : document.querySelector(selector);\n\t} catch {}\n}\nfunction getScrollToTopElements(scrollToTopSelectors) {\n\tconst elements = [];\n\tfor (const selector of scrollToTopSelectors) {\n\t\tif (selector === windowScrollTarget) continue;\n\t\tconst element = getElement(selector);\n\t\tif (element) elements.push(element);\n\t}\n\treturn elements;\n}\nfunction setupScrollRestoration(router, force) {\n\tconst shouldSetupScrollRestoration = force ?? router.options.scrollRestoration;\n\tconst scroll = router._scroll;\n\tif (shouldSetupScrollRestoration) scroll.restoring = true;\n\tif (isServer ?? router.isServer) return;\n\tconst getKey = router.options.getScrollRestorationKey || defaultGetScrollRestorationKey;\n\tconst trackedScrollEntries = /* @__PURE__ */ new Map();\n\tconst setTrackedScrollEntry = (target, scrollX, scrollY) => {\n\t\tconst entry = trackedScrollEntries.get(target) || {};\n\t\tentry.scrollX = scrollX;\n\t\tentry.scrollY = scrollY;\n\t\ttrackedScrollEntries.set(target, entry);\n\t};\n\tconst onScroll = (event) => {\n\t\tif (ignoreScroll || !scroll.restoring) return;\n\t\tif (event.target === document) setTrackedScrollEntry(windowScrollTarget, scrollX, scrollY);\n\t\telse {\n\t\t\tconst target = event.target;\n\t\t\tsetTrackedScrollEntry(target, target.scrollLeft, target.scrollTop);\n\t\t}\n\t};\n\tconst snapshotCurrentScrollTargets = (restoreKey) => {\n\t\tif (!scroll.restoring) return;\n\t\tconst keyEntry = scrollRestorationCache[restoreKey] ||= {};\n\t\tfor (const [target, position] of trackedScrollEntries) if (target === windowScrollTarget) keyEntry[windowScrollTarget] = position;\n\t\telse if (target.isConnected) keyEntry[getScrollRestorationSelector(target)] = position;\n\t};\n\tif (shouldSetupScrollRestoration && !scroll.restoration) {\n\t\tscroll.restoration = true;\n\t\tignoreScroll = false;\n\t\thistory.scrollRestoration = \"manual\";\n\t\tdocument.addEventListener(\"scroll\", onScroll, true);\n\t\trouter.subscribe(\"onBeforeLoad\", (event) => {\n\t\t\tif (event.fromLocation) snapshotCurrentScrollTargets(getKey(event.fromLocation));\n\t\t\ttrackedScrollEntries.clear();\n\t\t});\n\t\taddEventListener(\"pagehide\", () => {\n\t\t\tsnapshotCurrentScrollTargets(getKey(router.stores.resolvedLocation.get() ?? router.stores.location.get()));\n\t\t\tpersistScrollRestorationCache();\n\t\t});\n\t}\n\tif (scroll.reset) return;\n\tscroll.reset = true;\n\trouter.subscribe(\"onRendered\", (event) => {\n\t\tconst behavior = router.options.scrollRestorationBehavior;\n\t\tconst scrollToTopSelectors = router.options.scrollToTopSelectors;\n\t\tconst shouldResetScroll = scroll.next;\n\t\tlet scrollToTopElements;\n\t\ttrackedScrollEntries.clear();\n\t\tif (!shouldResetScroll) scroll.next = true;\n\t\tif (typeof router.options.scrollRestoration === \"function\" && !router.options.scrollRestoration({ location: router.latestLocation })) return;\n\t\tconst cacheKey = getKey(event.toLocation);\n\t\tconst fromCacheKey = event.fromLocation && getKey(event.fromLocation);\n\t\tif (scroll.restoring && fromCacheKey && fromCacheKey !== cacheKey) {\n\t\t\tconst fromElementEntries = scrollRestorationCache[fromCacheKey];\n\t\t\tif (fromElementEntries) {\n\t\t\t\tlet toElementEntries = scrollRestorationCache[cacheKey];\n\t\t\t\tfor (const elementSelector in fromElementEntries) {\n\t\t\t\t\tif (elementSelector === windowScrollTarget) {\n\t\t\t\t\t\tif (shouldResetScroll) continue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst element = getElement(elementSelector);\n\t\t\t\t\t\tif (!element) continue;\n\t\t\t\t\t\tif (shouldResetScroll && scrollToTopSelectors) {\n\t\t\t\t\t\t\tscrollToTopElements ??= getScrollToTopElements(scrollToTopSelectors);\n\t\t\t\t\t\t\tif (scrollToTopElements.includes(element)) continue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!toElementEntries) toElementEntries = scrollRestorationCache[cacheKey] = {};\n\t\t\t\t\ttoElementEntries[elementSelector] ??= fromElementEntries[elementSelector];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tignoreScroll = true;\n\t\ttry {\n\t\t\tconst hash = event.toLocation.hash;\n\t\t\tconst hashScrollIntoViewOptions = event.toLocation.state.__hashScrollIntoViewOptions ?? true;\n\t\t\tlet windowRestored = false;\n\t\t\tif (shouldResetScroll) {\n\t\t\t\tconst action = locationHistoryActions.get(event.toLocation);\n\t\t\t\tconst skipWindowRestore = hash && hashScrollIntoViewOptions && (action === \"PUSH\" || action === \"REPLACE\");\n\t\t\t\tconst elementEntries = scroll.restoring ? scrollRestorationCache[cacheKey] : void 0;\n\t\t\t\tif (elementEntries) for (const elementSelector in elementEntries) {\n\t\t\t\t\tconst { scrollX, scrollY } = elementEntries[elementSelector];\n\t\t\t\t\tif (elementSelector === windowScrollTarget) {\n\t\t\t\t\t\tif (skipWindowRestore) continue;\n\t\t\t\t\t\tscrollTo({\n\t\t\t\t\t\t\ttop: scrollY,\n\t\t\t\t\t\t\tleft: scrollX,\n\t\t\t\t\t\t\tbehavior\n\t\t\t\t\t\t});\n\t\t\t\t\t\twindowRestored = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst element = getElement(elementSelector);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\telement.scrollLeft = scrollX;\n\t\t\t\t\t\t\telement.scrollTop = scrollY;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!windowRestored && !hash) {\n\t\t\t\t\tconst scrollOptions = {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbehavior\n\t\t\t\t\t};\n\t\t\t\t\tscrollTo(scrollOptions);\n\t\t\t\t\tif (scrollToTopSelectors) {\n\t\t\t\t\t\tscrollToTopElements ??= getScrollToTopElements(scrollToTopSelectors);\n\t\t\t\t\t\tfor (const element of scrollToTopElements) element.scrollTo(scrollOptions);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!windowRestored && hash && hashScrollIntoViewOptions) document.getElementById(hash)?.scrollIntoView(hashScrollIntoViewOptions);\n\t\t} finally {\n\t\t\tignoreScroll = false;\n\t\t}\n\t});\n}\n//#endregion\nexport { defaultGetScrollRestorationKey, getElementScrollRestorationEntry, setupScrollRestoration, storageKey };\n\n//# sourceMappingURL=scroll-restoration.js.map","//#region src/link.ts\nconst preloadWarning = \"Error preloading route! ☝️\";\n//#endregion\nexport { preloadWarning };\n\n//# sourceMappingURL=link.js.map","import { invariant } from \"./invariant.js\";\nimport { joinPaths, trimPathLeft, trimPathRight } from \"./path.js\";\nimport { notFound } from \"./not-found.js\";\nimport { rootRouteId } from \"./root.js\";\nimport { redirect } from \"./redirect.js\";\n//#region src/route.ts\nvar BaseRoute = class {\n\tget to() {\n\t\treturn this._to;\n\t}\n\tget id() {\n\t\treturn this._id;\n\t}\n\tget path() {\n\t\treturn this._path;\n\t}\n\tget fullPath() {\n\t\treturn this._fullPath;\n\t}\n\tconstructor(options) {\n\t\tthis.init = (opts) => {\n\t\t\tthis.originalIndex = opts.originalIndex;\n\t\t\tconst options = this.options;\n\t\t\tconst isRoot = !options?.path && !options?.id;\n\t\t\tthis.parentRoute = this.options.getParentRoute?.();\n\t\t\tif (isRoot) this._path = rootRouteId;\n\t\t\telse if (!this.parentRoute) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Child Route instances must pass a 'getParentRoute: () => ParentRoute' option that returns a Route instance.`);\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\tlet path = isRoot ? rootRouteId : options?.path;\n\t\t\tif (path && path !== \"/\") path = trimPathLeft(path);\n\t\t\tconst customId = options?.id || path;\n\t\t\tlet id = isRoot ? rootRouteId : joinPaths([this.parentRoute.id === \"__root__\" ? \"\" : this.parentRoute.id, customId]);\n\t\t\tif (path === \"__root__\") path = \"/\";\n\t\t\tif (id !== \"__root__\") id = joinPaths([\"/\", id]);\n\t\t\tconst fullPath = id === \"__root__\" ? \"/\" : joinPaths([this.parentRoute.fullPath, path]);\n\t\t\tthis._path = path;\n\t\t\tthis._id = id;\n\t\t\tthis._fullPath = fullPath;\n\t\t\tthis._to = trimPathRight(fullPath);\n\t\t};\n\t\tthis.addChildren = (children) => {\n\t\t\treturn this._addFileChildren(children);\n\t\t};\n\t\tthis._addFileChildren = (children) => {\n\t\t\tif (Array.isArray(children)) this.children = children;\n\t\t\tif (typeof children === \"object\" && children !== null) this.children = Object.values(children);\n\t\t\treturn this;\n\t\t};\n\t\tthis._addFileTypes = () => {\n\t\t\treturn this;\n\t\t};\n\t\tthis.updateLoader = (options) => {\n\t\t\tObject.assign(this.options, options);\n\t\t\treturn this;\n\t\t};\n\t\tthis.update = (options) => {\n\t\t\tObject.assign(this.options, options);\n\t\t\treturn this;\n\t\t};\n\t\tthis.lazy = (lazyFn) => {\n\t\t\tthis.lazyFn = lazyFn;\n\t\t\treturn this;\n\t\t};\n\t\tthis.redirect = (opts) => redirect({\n\t\t\tfrom: this.fullPath,\n\t\t\t...opts\n\t\t});\n\t\tthis.options = options || {};\n\t\tthis.isRoot = !options?.getParentRoute;\n\t\tif (options?.id && options?.path) throw new Error(`Route cannot have both an 'id' and a 'path' option.`);\n\t}\n};\nvar BaseRouteApi = class {\n\tconstructor({ id }) {\n\t\tthis.notFound = (opts) => {\n\t\t\treturn notFound({\n\t\t\t\trouteId: this.id,\n\t\t\t\t...opts\n\t\t\t});\n\t\t};\n\t\tthis.redirect = (opts) => redirect({\n\t\t\tfrom: this.id,\n\t\t\t...opts\n\t\t});\n\t\tthis.id = id;\n\t}\n};\nvar BaseRootRoute = class extends BaseRoute {\n\tconstructor(options) {\n\t\tsuper(options);\n\t}\n};\n//#endregion\nexport { BaseRootRoute, BaseRoute, BaseRouteApi };\n\n//# sourceMappingURL=route.js.map","\"use client\";\nimport * as React$1 from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\n//#region src/CatchBoundary.tsx\nfunction CatchBoundary(props) {\n\tconst errorComponent = props.errorComponent ?? ErrorComponent;\n\treturn /* @__PURE__ */ jsx(CatchBoundaryImpl, {\n\t\tgetResetKey: props.getResetKey,\n\t\tonCatch: props.onCatch,\n\t\tchildren: ({ error, reset }) => {\n\t\t\tif (error) return React$1.createElement(errorComponent, {\n\t\t\t\terror,\n\t\t\t\treset\n\t\t\t});\n\t\t\treturn props.children;\n\t\t}\n\t});\n}\nvar CatchBoundaryImpl = class extends React$1.Component {\n\tconstructor(..._args) {\n\t\tsuper(..._args);\n\t\tthis.state = { error: null };\n\t}\n\tstatic getDerivedStateFromProps(props, state) {\n\t\tconst resetKey = props.getResetKey();\n\t\tif (state.error && state.resetKey !== resetKey) return {\n\t\t\tresetKey,\n\t\t\terror: null\n\t\t};\n\t\treturn { resetKey };\n\t}\n\tstatic getDerivedStateFromError(error) {\n\t\treturn { error };\n\t}\n\treset() {\n\t\tthis.setState({ error: null });\n\t}\n\tcomponentDidCatch(error, errorInfo) {\n\t\tif (this.props.onCatch) this.props.onCatch(error, errorInfo);\n\t}\n\trender() {\n\t\treturn this.props.children({\n\t\t\terror: this.state.error,\n\t\t\treset: () => {\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t});\n\t}\n};\nfunction ErrorComponent({ error }) {\n\tconst [show, setShow] = React$1.useState(process.env.NODE_ENV !== \"production\");\n\treturn /* @__PURE__ */ jsxs(\"div\", {\n\t\tstyle: {\n\t\t\tpadding: \".5rem\",\n\t\t\tmaxWidth: \"100%\"\n\t\t},\n\t\tchildren: [\n\t\t\t/* @__PURE__ */ jsxs(\"div\", {\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: \".5rem\"\n\t\t\t\t},\n\t\t\t\tchildren: [/* @__PURE__ */ jsx(\"strong\", {\n\t\t\t\t\tstyle: { fontSize: \"1rem\" },\n\t\t\t\t\tchildren: \"Something went wrong!\"\n\t\t\t\t}), /* @__PURE__ */ jsx(\"button\", {\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tappearance: \"none\",\n\t\t\t\t\t\tfontSize: \".6em\",\n\t\t\t\t\t\tborder: \"1px solid currentColor\",\n\t\t\t\t\t\tpadding: \".1rem .2rem\",\n\t\t\t\t\t\tfontWeight: \"bold\",\n\t\t\t\t\t\tborderRadius: \".25rem\"\n\t\t\t\t\t},\n\t\t\t\t\tonClick: () => setShow((d) => !d),\n\t\t\t\t\tchildren: show ? \"Hide Error\" : \"Show Error\"\n\t\t\t\t})]\n\t\t\t}),\n\t\t\t/* @__PURE__ */ jsx(\"div\", { style: { height: \".25rem\" } }),\n\t\t\tshow ? /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsx(\"pre\", {\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: \".7em\",\n\t\t\t\t\tborder: \"1px solid red\",\n\t\t\t\t\tborderRadius: \".25rem\",\n\t\t\t\t\tpadding: \".3rem\",\n\t\t\t\t\tcolor: \"red\",\n\t\t\t\t\toverflow: \"auto\"\n\t\t\t\t},\n\t\t\t\tchildren: error.message ? /* @__PURE__ */ jsx(\"code\", { children: error.message }) : null\n\t\t\t}) }) : null\n\t\t]\n\t});\n}\n//#endregion\nexport { CatchBoundary, ErrorComponent };\n\n//# sourceMappingURL=CatchBoundary.js.map","\"use client\";\nimport React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/ClientOnly.tsx\n/**\n* Render the children only after the JS has loaded client-side. Use an optional\n* fallback component if the JS is not yet loaded.\n*\n* @example\n* Render a Chart component if JS loads, renders a simple FakeChart\n* component server-side or if there is no JS. The FakeChart can have only the\n* UI without the behavior or be a loading spinner or skeleton.\n*\n* ```tsx\n* return (\n* <ClientOnly fallback={<FakeChart />}>\n* <Chart />\n* </ClientOnly>\n* )\n* ```\n*/\nfunction ClientOnly({ children, fallback = null }) {\n\treturn useHydrated() ? /* @__PURE__ */ jsx(React.Fragment, { children }) : /* @__PURE__ */ jsx(React.Fragment, { children: fallback });\n}\n/**\n* Return a boolean indicating if the JS has been hydrated already.\n* When doing Server-Side Rendering, the result will always be false.\n* When doing Client-Side Rendering, the result will always be false on the\n* first render and true from then on. Even if a new component renders it will\n* always start with true.\n*\n* @example\n* ```tsx\n* // Disable a button that needs JS to work.\n* let hydrated = useHydrated()\n* return (\n* <button type=\"button\" disabled={!hydrated} onClick={doSomethingCustom}>\n* Click me\n* </button>\n* )\n* ```\n* @returns True if the JS has been hydrated already, false otherwise.\n*/\nfunction useHydrated() {\n\treturn React.useSyncExternalStore(subscribe, () => true, () => false);\n}\nfunction subscribe() {\n\treturn () => {};\n}\n//#endregion\nexport { ClientOnly, useHydrated };\n\n//# sourceMappingURL=ClientOnly.js.map","\"use client\";\nimport * as React$1 from \"react\";\n//#region src/routerContext.tsx\nvar routerContext = React$1.createContext(null);\n//#endregion\nexport { routerContext };\n\n//# sourceMappingURL=routerContext.js.map","\"use client\";\nimport { routerContext } from \"./routerContext.js\";\nimport * as React$1 from \"react\";\n//#region src/useRouter.tsx\n/**\n* Access the current TanStack Router instance from React context.\n* Must be used within a `RouterProvider`.\n*\n* Options:\n* - `warn`: Log a warning if no router context is found (default: true).\n*\n* @returns The registered router instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useRouterHook\n*/\nfunction useRouter(opts) {\n\tconst value = React$1.useContext(routerContext);\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif ((opts?.warn ?? true) && !value) console.warn(\"Warning: useRouter must be used inside a <RouterProvider> component!\");\n\t}\n\treturn value;\n}\n//#endregion\nexport { useRouter };\n\n//# sourceMappingURL=useRouter.js.map","\"use client\";\nimport * as React$1 from \"react\";\n//#region src/matchContext.tsx\nvar matchContext = React$1.createContext(void 0);\nvar dummyMatchContext = React$1.createContext(void 0);\n//#endregion\nexport { dummyMatchContext, matchContext };\n\n//# sourceMappingURL=matchContext.js.map","var ReactiveFlags = /* @__PURE__ */ ((ReactiveFlags2) => {\n ReactiveFlags2[ReactiveFlags2[\"None\"] = 0] = \"None\";\n ReactiveFlags2[ReactiveFlags2[\"Mutable\"] = 1] = \"Mutable\";\n ReactiveFlags2[ReactiveFlags2[\"Watching\"] = 2] = \"Watching\";\n ReactiveFlags2[ReactiveFlags2[\"RecursedCheck\"] = 4] = \"RecursedCheck\";\n ReactiveFlags2[ReactiveFlags2[\"Recursed\"] = 8] = \"Recursed\";\n ReactiveFlags2[ReactiveFlags2[\"Dirty\"] = 16] = \"Dirty\";\n ReactiveFlags2[ReactiveFlags2[\"Pending\"] = 32] = \"Pending\";\n return ReactiveFlags2;\n})(ReactiveFlags || {});\n// @__NO_SIDE_EFFECTS__\nfunction createReactiveSystem({\n update,\n notify,\n unwatched\n}) {\n return {\n link,\n unlink,\n propagate,\n checkDirty,\n shallowPropagate\n };\n function link(dep, sub, version) {\n const prevDep = sub.depsTail;\n if (prevDep !== void 0 && prevDep.dep === dep) {\n return;\n }\n const nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;\n if (nextDep !== void 0 && nextDep.dep === dep) {\n nextDep.version = version;\n sub.depsTail = nextDep;\n return;\n }\n const prevSub = dep.subsTail;\n if (prevSub !== void 0 && prevSub.version === version && prevSub.sub === sub) {\n return;\n }\n const newLink = sub.depsTail = dep.subsTail = {\n version,\n dep,\n sub,\n prevDep,\n nextDep,\n prevSub,\n nextSub: void 0\n };\n if (nextDep !== void 0) {\n nextDep.prevDep = newLink;\n }\n if (prevDep !== void 0) {\n prevDep.nextDep = newLink;\n } else {\n sub.deps = newLink;\n }\n if (prevSub !== void 0) {\n prevSub.nextSub = newLink;\n } else {\n dep.subs = newLink;\n }\n }\n function unlink(link2, sub = link2.sub) {\n const dep = link2.dep;\n const prevDep = link2.prevDep;\n const nextDep = link2.nextDep;\n const nextSub = link2.nextSub;\n const prevSub = link2.prevSub;\n if (nextDep !== void 0) {\n nextDep.prevDep = prevDep;\n } else {\n sub.depsTail = prevDep;\n }\n if (prevDep !== void 0) {\n prevDep.nextDep = nextDep;\n } else {\n sub.deps = nextDep;\n }\n if (nextSub !== void 0) {\n nextSub.prevSub = prevSub;\n } else {\n dep.subsTail = prevSub;\n }\n if (prevSub !== void 0) {\n prevSub.nextSub = nextSub;\n } else if ((dep.subs = nextSub) === void 0) {\n unwatched(dep);\n }\n return nextDep;\n }\n function propagate(link2) {\n let next = link2.nextSub;\n let stack;\n top: do {\n const sub = link2.sub;\n let flags = sub.flags;\n if (!(flags & (4 | 8 | 16 | 32))) {\n sub.flags = flags | 32;\n } else if (!(flags & (4 | 8))) {\n flags = 0;\n } else if (!(flags & 4)) {\n sub.flags = flags & -9 | 32;\n } else if (!(flags & (16 | 32)) && isValidLink(link2, sub)) {\n sub.flags = flags | (8 | 32);\n flags &= 1;\n } else {\n flags = 0;\n }\n if (flags & 2) {\n notify(sub);\n }\n if (flags & 1) {\n const subSubs = sub.subs;\n if (subSubs !== void 0) {\n const nextSub = (link2 = subSubs).nextSub;\n if (nextSub !== void 0) {\n stack = { value: next, prev: stack };\n next = nextSub;\n }\n continue;\n }\n }\n if ((link2 = next) !== void 0) {\n next = link2.nextSub;\n continue;\n }\n while (stack !== void 0) {\n link2 = stack.value;\n stack = stack.prev;\n if (link2 !== void 0) {\n next = link2.nextSub;\n continue top;\n }\n }\n break;\n } while (true);\n }\n function checkDirty(link2, sub) {\n let stack;\n let checkDepth = 0;\n let dirty = false;\n top: do {\n const dep = link2.dep;\n const flags = dep.flags;\n if (sub.flags & 16) {\n dirty = true;\n } else if ((flags & (1 | 16)) === (1 | 16)) {\n if (update(dep)) {\n const subs = dep.subs;\n if (subs.nextSub !== void 0) {\n shallowPropagate(subs);\n }\n dirty = true;\n }\n } else if ((flags & (1 | 32)) === (1 | 32)) {\n if (link2.nextSub !== void 0 || link2.prevSub !== void 0) {\n stack = { value: link2, prev: stack };\n }\n link2 = dep.deps;\n sub = dep;\n ++checkDepth;\n continue;\n }\n if (!dirty) {\n const nextDep = link2.nextDep;\n if (nextDep !== void 0) {\n link2 = nextDep;\n continue;\n }\n }\n while (checkDepth--) {\n const firstSub = sub.subs;\n const hasMultipleSubs = firstSub.nextSub !== void 0;\n if (hasMultipleSubs) {\n link2 = stack.value;\n stack = stack.prev;\n } else {\n link2 = firstSub;\n }\n if (dirty) {\n if (update(sub)) {\n if (hasMultipleSubs) {\n shallowPropagate(firstSub);\n }\n sub = link2.sub;\n continue;\n }\n dirty = false;\n } else {\n sub.flags &= -33;\n }\n sub = link2.sub;\n const nextDep = link2.nextDep;\n if (nextDep !== void 0) {\n link2 = nextDep;\n continue top;\n }\n }\n return dirty;\n } while (true);\n }\n function shallowPropagate(link2) {\n do {\n const sub = link2.sub;\n const flags = sub.flags;\n if ((flags & (32 | 16)) === 32) {\n sub.flags = flags | 16;\n if ((flags & (2 | 4)) === 2) {\n notify(sub);\n }\n }\n } while ((link2 = link2.nextSub) !== void 0);\n }\n function isValidLink(checkLink, sub) {\n let link2 = sub.depsTail;\n while (link2 !== void 0) {\n if (link2 === checkLink) {\n return true;\n }\n link2 = link2.prevDep;\n }\n return false;\n }\n}\nexport {\n ReactiveFlags,\n createReactiveSystem\n};\n//# sourceMappingURL=alien.js.map\n","import { createReactiveSystem, ReactiveFlags } from \"./alien.js\";\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n const isObserver = typeof nextHandler === \"object\";\n const self = isObserver ? nextHandler : void 0;\n return {\n next: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n error: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n complete: (isObserver ? nextHandler.complete : completionHandler)?.bind(\n self\n )\n };\n}\nconst queuedEffects = [];\nlet cycle = 0;\nconst { link, unlink, propagate, checkDirty, shallowPropagate } = createReactiveSystem({\n update(atom) {\n return atom._update();\n },\n // eslint-disable-next-line no-shadow\n notify(effect2) {\n queuedEffects[queuedEffectsLength++] = effect2;\n effect2.flags &= ~ReactiveFlags.Watching;\n },\n unwatched(atom) {\n if (atom.depsTail !== void 0) {\n atom.depsTail = void 0;\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.Dirty;\n purgeDeps(atom);\n }\n }\n});\nlet notifyIndex = 0;\nlet queuedEffectsLength = 0;\nlet activeSub;\nlet batchDepth = 0;\nfunction batch(fn) {\n try {\n ++batchDepth;\n fn();\n } finally {\n if (!--batchDepth) {\n flush();\n }\n }\n}\nfunction purgeDeps(sub) {\n const depsTail = sub.depsTail;\n let dep = depsTail !== void 0 ? depsTail.nextDep : sub.deps;\n while (dep !== void 0) {\n dep = unlink(dep, sub);\n }\n}\nfunction flush() {\n if (batchDepth > 0) {\n return;\n }\n while (notifyIndex < queuedEffectsLength) {\n const effect2 = queuedEffects[notifyIndex];\n queuedEffects[notifyIndex++] = void 0;\n effect2.notify();\n }\n notifyIndex = 0;\n queuedEffectsLength = 0;\n}\nfunction createAsyncAtom(getValue, options) {\n const ref = {};\n const atom = createAtom(() => {\n getValue().then(\n (data) => {\n const internalAtom = ref.current;\n if (internalAtom._update({ status: \"done\", data })) {\n const subs = internalAtom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n },\n (error) => {\n const internalAtom = ref.current;\n if (internalAtom._update({ status: \"error\", error })) {\n const subs = internalAtom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n }\n );\n return { status: \"pending\" };\n }, options);\n ref.current = atom;\n return atom;\n}\nfunction createAtom(valueOrFn, options) {\n const isComputed = typeof valueOrFn === \"function\";\n const getter = valueOrFn;\n const atom = {\n _snapshot: isComputed ? void 0 : valueOrFn,\n subs: void 0,\n subsTail: void 0,\n deps: void 0,\n depsTail: void 0,\n flags: isComputed ? ReactiveFlags.None : ReactiveFlags.Mutable,\n get() {\n if (activeSub !== void 0) {\n link(atom, activeSub, cycle);\n }\n return atom._snapshot;\n },\n subscribe(observerOrFn) {\n const obs = toObserver(observerOrFn);\n const observed = { current: false };\n const e = effect(() => {\n atom.get();\n if (!observed.current) {\n observed.current = true;\n } else {\n obs.next?.(atom._snapshot);\n }\n });\n return {\n unsubscribe: () => {\n e.stop();\n }\n };\n },\n _update(getValue) {\n const prevSub = activeSub;\n const compare = options?.compare ?? Object.is;\n if (isComputed) {\n activeSub = atom;\n ++cycle;\n atom.depsTail = void 0;\n } else if (getValue === void 0) {\n return false;\n }\n if (isComputed) {\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.RecursedCheck;\n }\n try {\n const oldValue = atom._snapshot;\n const newValue = typeof getValue === \"function\" ? getValue(oldValue) : getValue === void 0 && isComputed ? getter(oldValue) : getValue;\n if (oldValue === void 0 || !compare(oldValue, newValue)) {\n atom._snapshot = newValue;\n return true;\n }\n return false;\n } finally {\n activeSub = prevSub;\n if (isComputed) {\n atom.flags &= ~ReactiveFlags.RecursedCheck;\n }\n purgeDeps(atom);\n }\n }\n };\n if (isComputed) {\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.Dirty;\n atom.get = function() {\n const flags = atom.flags;\n if (flags & ReactiveFlags.Dirty || flags & ReactiveFlags.Pending && checkDirty(atom.deps, atom)) {\n if (atom._update()) {\n const subs = atom.subs;\n if (subs !== void 0) {\n shallowPropagate(subs);\n }\n }\n } else if (flags & ReactiveFlags.Pending) {\n atom.flags = flags & ~ReactiveFlags.Pending;\n }\n if (activeSub !== void 0) {\n link(atom, activeSub, cycle);\n }\n return atom._snapshot;\n };\n } else {\n atom.set = function(valueOrFn2) {\n if (atom._update(valueOrFn2)) {\n const subs = atom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n };\n }\n return atom;\n}\nfunction effect(fn) {\n const run = () => {\n const prevSub = activeSub;\n activeSub = effectObj;\n ++cycle;\n effectObj.depsTail = void 0;\n effectObj.flags = ReactiveFlags.Watching | ReactiveFlags.RecursedCheck;\n try {\n return fn();\n } finally {\n activeSub = prevSub;\n effectObj.flags &= ~ReactiveFlags.RecursedCheck;\n purgeDeps(effectObj);\n }\n };\n const effectObj = {\n deps: void 0,\n depsTail: void 0,\n subs: void 0,\n subsTail: void 0,\n flags: ReactiveFlags.Watching | ReactiveFlags.RecursedCheck,\n notify() {\n const flags = this.flags;\n if (flags & ReactiveFlags.Dirty || flags & ReactiveFlags.Pending && checkDirty(this.deps, this)) {\n run();\n } else {\n this.flags = ReactiveFlags.Watching;\n }\n },\n stop() {\n this.flags = ReactiveFlags.None;\n this.depsTail = void 0;\n purgeDeps(this);\n }\n };\n run();\n return effectObj;\n}\nexport {\n batch,\n createAsyncAtom,\n createAtom,\n flush,\n toObserver\n};\n//# sourceMappingURL=atom.js.map\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { useCallback } from \"react\";\nimport { useSyncExternalStoreWithSelector } from \"use-sync-external-store/shim/with-selector\";\nfunction defaultCompare(a, b) {\n return a === b;\n}\nfunction useStore(atom, selector, compare = defaultCompare) {\n const subscribe = useCallback(\n (handleStoreChange) => {\n if (!atom) {\n return () => {\n };\n }\n const { unsubscribe } = atom.subscribe(handleStoreChange);\n return unsubscribe;\n },\n [atom]\n );\n const boundGetSnapshot = useCallback(() => atom?.get(), [atom]);\n const selectedSnapshot = useSyncExternalStoreWithSelector(\n subscribe,\n boundGetSnapshot,\n boundGetSnapshot,\n selector,\n compare\n );\n return selectedSnapshot;\n}\nexport {\n useStore\n};\n//# sourceMappingURL=useStore.js.map\n","\"use client\";\nimport { dummyMatchContext, matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { invariant, replaceEqualDeep } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/useMatch.tsx\nvar dummyStore = {\n\tget() {},\n\tsubscribe() {\n\t\treturn { unsubscribe() {} };\n\t}\n};\nfunction useStructuralSharing(opts, router) {\n\tconst previousResult = React$1.useRef();\n\treturn (slice) => {\n\t\tconst selected = opts?.select ? opts.select(slice) : slice;\n\t\tif (opts?.structuralSharing ?? router.options.defaultStructuralSharing) return previousResult.current = replaceEqualDeep(previousResult.current, selected);\n\t\treturn selected;\n\t};\n}\n/**\n* Read and select the nearest or targeted route match.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchHook\n*/\nfunction useMatch(opts) {\n\tconst router = useRouter();\n\tconst nearestMatchId = React$1.useContext(opts.from ? dummyMatchContext : matchContext);\n\tconst matchStore = opts.from ? router.stores.getRouteMatchStore(opts.from) : router.stores.matchStores.get(nearestMatchId);\n\tif (isServer ?? router.isServer) {\n\t\tconst match = matchStore?.get();\n\t\tif (!match) {\n\t\t\tif (opts.shouldThrow ?? true) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find ${opts.from ? `an active match from \"${opts.from}\"` : \"a nearest match!\"}`);\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\treturn opts.select ? opts.select(match) : match;\n\t}\n\tconst selector = useStructuralSharing(opts, router);\n\tconst matchSelection = useStore(matchStore ?? dummyStore, (match) => match ? selector(match) : dummyStore);\n\tif (matchSelection !== dummyStore) return matchSelection;\n\tif (opts.shouldThrow ?? true) {\n\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find ${opts.from ? `an active match from \"${opts.from}\"` : \"a nearest match!\"}`);\n\t\tinvariant();\n\t}\n}\n//#endregion\nexport { useMatch, useStructuralSharing };\n\n//# sourceMappingURL=useMatch.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useLoaderData.tsx\n/**\n* Read and select the current route's loader data with type‑safety.\n*\n* Options:\n* - `from`/`strict`: Choose which route's data to read and strictness\n* - `select`: Map the loader data to a derived value\n* - `structuralSharing`: Enable structural sharing for stable references\n*\n* @returns The loader data (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLoaderDataHook\n*/\nfunction useLoaderData(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tstrict: opts.strict,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tselect: (match) => {\n\t\t\treturn opts.select ? opts.select(match.loaderData) : match.loaderData;\n\t\t}\n\t});\n}\n//#endregion\nexport { useLoaderData };\n\n//# sourceMappingURL=useLoaderData.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useLoaderDeps.tsx\n/**\n* Read and select the current route's loader dependencies object.\n*\n* Options:\n* - `from`: Choose which route's loader deps to read\n* - `select`: Map the deps to a derived value\n* - `structuralSharing`: Enable structural sharing for stable references\n*\n* @returns The loader deps (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLoaderDepsHook\n*/\nfunction useLoaderDeps(opts) {\n\tconst { select, ...rest } = opts;\n\treturn useMatch({\n\t\t...rest,\n\t\tselect: (match) => {\n\t\t\treturn select ? select(match.loaderDeps) : match.loaderDeps;\n\t\t}\n\t});\n}\n//#endregion\nexport { useLoaderDeps };\n\n//# sourceMappingURL=useLoaderDeps.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useParams.tsx\n/**\n* Access the current route's path parameters with type-safety.\n*\n* Options:\n* - `from`/`strict`: Specify the matched route and whether to enforce strict typing\n* - `select`: Project the params object to a derived value for memoized renders\n* - `structuralSharing`: Enable structural sharing for stable references\n* - `shouldThrow`: Throw if the route is not found in strict contexts\n*\n* @returns The params object (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useParamsHook\n*/\nfunction useParams(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tshouldThrow: opts.shouldThrow,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tstrict: opts.strict,\n\t\tselect: (match) => {\n\t\t\tconst params = opts.strict === false ? match.params : match._strictParams;\n\t\t\treturn opts.select ? opts.select(params) : params;\n\t\t}\n\t});\n}\n//#endregion\nexport { useParams };\n\n//# sourceMappingURL=useParams.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useSearch.tsx\n/**\n* Read and select the current route's search parameters with type-safety.\n*\n* Options:\n* - `from`/`strict`: Control which route's search is read and how strictly it's typed\n* - `select`: Map the search object to a derived value for render optimization\n* - `structuralSharing`: Enable structural sharing for stable references\n* - `shouldThrow`: Throw when the route is not found (strict contexts)\n*\n* @returns The search object (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useSearchHook\n*/\nfunction useSearch(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tstrict: opts.strict,\n\t\tshouldThrow: opts.shouldThrow,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tselect: (match) => {\n\t\t\treturn opts.select ? opts.select(match.search) : match.search;\n\t\t}\n\t});\n}\n//#endregion\nexport { useSearch };\n\n//# sourceMappingURL=useSearch.js.map","\"use client\";\nimport { useLayoutEffect } from \"./utils.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport * as React$1 from \"react\";\n//#region src/useNavigate.tsx\n/**\n* Imperative navigation hook.\n*\n* Returns a stable `navigate(options)` function to change the current location\n* programmatically. Prefer the `Link` component for user-initiated navigation,\n* and use this hook from effects, callbacks, or handlers where imperative\n* navigation is required.\n*\n* Options:\n* - `from`: Optional route base used to resolve relative `to` paths.\n*\n* @returns A function that accepts `NavigateOptions`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useNavigateHook\n*/\nfunction useNavigate(_defaultOpts) {\n\tconst router = useRouter();\n\treturn React$1.useCallback((options) => {\n\t\treturn router.navigate({\n\t\t\t...options,\n\t\t\tfrom: options.from ?? _defaultOpts?.from\n\t\t});\n\t}, [_defaultOpts?.from, router]);\n}\n/**\n* Component that triggers a navigation when rendered. Navigation executes\n* in an effect after mount/update.\n*\n* Props are the same as `NavigateOptions` used by `navigate()`.\n*\n* @returns null\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/navigateComponent\n*/\nfunction Navigate(props) {\n\tconst router = useRouter();\n\tconst navigate = useNavigate();\n\tconst previousPropsRef = React$1.useRef(null);\n\tuseLayoutEffect(() => {\n\t\tif (previousPropsRef.current !== props) {\n\t\t\tnavigate(props);\n\t\t\tpreviousPropsRef.current = props;\n\t\t}\n\t}, [\n\t\trouter,\n\t\tprops,\n\t\tnavigate\n\t]);\n\treturn null;\n}\n//#endregion\nexport { Navigate, useNavigate };\n\n//# sourceMappingURL=useNavigate.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useRouteContext.ts\nfunction useRouteContext(opts) {\n\treturn useMatch({\n\t\t...opts,\n\t\tselect: (match) => opts.select ? opts.select(match.context) : match.context\n\t});\n}\n//#endregion\nexport { useRouteContext };\n\n//# sourceMappingURL=useRouteContext.js.map","\"use client\";\nimport { useForwardedRef, useIntersectionObserver } from \"./utils.js\";\nimport { useHydrated } from \"./ClientOnly.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { deepEqual, exactPathTest, functionalUpdate, hasKeys, isDangerousProtocol, preloadWarning, removeTrailingSlash } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\nimport { flushSync } from \"react-dom\";\n//#region src/link.tsx\n/**\n* Build anchor-like props for declarative navigation and preloading.\n*\n* Returns stable `href`, event handlers and accessibility props derived from\n* router options and active state. Used internally by `Link` and custom links.\n*\n* Options cover `to`, `params`, `search`, `hash`, `state`, `preload`,\n* `activeProps`, `inactiveProps`, and more.\n*\n* @returns React anchor props suitable for `<a>` or custom components.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLinkPropsHook\n*/\nfunction useLinkProps(options, forwardedRef) {\n\tconst router = useRouter();\n\tconst innerRef = useForwardedRef(forwardedRef);\n\tconst _isServer = isServer ?? router.isServer;\n\tconst { activeProps, inactiveProps, activeOptions, to, preload: userPreload, preloadDelay: userPreloadDelay, preloadIntentProximity: _preloadIntentProximity, hashScrollIntoView, replace, startTransition, resetScroll, viewTransition, children, target, disabled, style, className, onClick, onBlur, onFocus, onMouseEnter, onMouseLeave, onTouchStart, ignoreBlocker, params: _params, search: _search, hash: _hash, state: _state, mask: _mask, reloadDocument: _reloadDocument, unsafeRelative: _unsafeRelative, from: _from, _fromLocation, ...propsSafeToSpread } = options;\n\tif (_isServer) {\n\t\tconst safeInternal = isSafeInternal(to);\n\t\tif (typeof to === \"string\" && !safeInternal && to.indexOf(\":\") > -1) try {\n\t\t\tnew URL(to);\n\t\t\tif (isDangerousProtocol(to, router.protocolAllowlist)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\t\treturn {\n\t\t\t\t\t...propsSafeToSpread,\n\t\t\t\t\tref: innerRef,\n\t\t\t\t\thref: void 0,\n\t\t\t\t\t...children && { children },\n\t\t\t\t\t...target && { target },\n\t\t\t\t\t...disabled && { disabled },\n\t\t\t\t\t...style && { style },\n\t\t\t\t\t...className && { className }\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...propsSafeToSpread,\n\t\t\t\tref: innerRef,\n\t\t\t\thref: to,\n\t\t\t\t...children && { children },\n\t\t\t\t...target && { target },\n\t\t\t\t...disabled && { disabled },\n\t\t\t\t...style && { style },\n\t\t\t\t...className && { className }\n\t\t\t};\n\t\t} catch {}\n\t\tconst next = router.buildLocation({\n\t\t\t...options,\n\t\t\tfrom: options.from\n\t\t});\n\t\tconst hrefOption = getHrefOption(next.maskedLocation ? next.maskedLocation.publicHref : next.publicHref, next.maskedLocation ? next.maskedLocation.external : next.external, router.history, disabled);\n\t\tconst externalLink = (() => {\n\t\t\tif (hrefOption?.external) {\n\t\t\t\tif (isDangerousProtocol(hrefOption.href, router.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${hrefOption.href}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn hrefOption.href;\n\t\t\t}\n\t\t\tif (safeInternal) return void 0;\n\t\t\tif (typeof to === \"string\" && to.indexOf(\":\") > -1) try {\n\t\t\t\tnew URL(to);\n\t\t\t\tif (isDangerousProtocol(to, router.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn to;\n\t\t\t} catch {}\n\t\t})();\n\t\tconst isActive = (() => {\n\t\t\tif (externalLink) return false;\n\t\t\tconst currentLocation = router.stores.location.get();\n\t\t\tconst exact = activeOptions?.exact ?? false;\n\t\t\tif (exact) {\n\t\t\t\tif (!exactPathTest(currentLocation.pathname, next.pathname, router.basepath)) return false;\n\t\t\t} else {\n\t\t\t\tconst currentPathSplit = removeTrailingSlash(currentLocation.pathname, router.basepath);\n\t\t\t\tconst nextPathSplit = removeTrailingSlash(next.pathname, router.basepath);\n\t\t\t\tif (!(currentPathSplit.startsWith(nextPathSplit) && (currentPathSplit.length === nextPathSplit.length || currentPathSplit[nextPathSplit.length] === \"/\"))) return false;\n\t\t\t}\n\t\t\tif (activeOptions?.includeSearch ?? true) {\n\t\t\t\tif (currentLocation.search !== next.search) {\n\t\t\t\t\tconst currentSearchEmpty = !currentLocation.search || typeof currentLocation.search === \"object\" && !hasKeys(currentLocation.search);\n\t\t\t\t\tconst nextSearchEmpty = !next.search || typeof next.search === \"object\" && !hasKeys(next.search);\n\t\t\t\t\tif (!(currentSearchEmpty && nextSearchEmpty)) {\n\t\t\t\t\t\tif (!deepEqual(currentLocation.search, next.search, {\n\t\t\t\t\t\t\tpartial: !exact,\n\t\t\t\t\t\t\tignoreUndefined: !activeOptions?.explicitUndefined\n\t\t\t\t\t\t})) return false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (activeOptions?.includeHash) return false;\n\t\t\treturn true;\n\t\t})();\n\t\tif (externalLink) return {\n\t\t\t...propsSafeToSpread,\n\t\t\tref: innerRef,\n\t\t\thref: externalLink,\n\t\t\t...children && { children },\n\t\t\t...target && { target },\n\t\t\t...disabled && { disabled },\n\t\t\t...style && { style },\n\t\t\t...className && { className }\n\t\t};\n\t\tconst resolvedActiveProps = isActive ? functionalUpdate(activeProps, {}) ?? STATIC_ACTIVE_OBJECT : STATIC_EMPTY_OBJECT;\n\t\tconst resolvedInactiveProps = isActive ? STATIC_EMPTY_OBJECT : functionalUpdate(inactiveProps, {}) ?? STATIC_EMPTY_OBJECT;\n\t\tconst resolvedStyle = (() => {\n\t\t\tconst baseStyle = style;\n\t\t\tconst activeStyle = resolvedActiveProps.style;\n\t\t\tconst inactiveStyle = resolvedInactiveProps.style;\n\t\t\tif (!baseStyle && !activeStyle && !inactiveStyle) return;\n\t\t\tif (baseStyle && !activeStyle && !inactiveStyle) return baseStyle;\n\t\t\tif (!baseStyle && activeStyle && !inactiveStyle) return activeStyle;\n\t\t\tif (!baseStyle && !activeStyle && inactiveStyle) return inactiveStyle;\n\t\t\treturn {\n\t\t\t\t...baseStyle,\n\t\t\t\t...activeStyle,\n\t\t\t\t...inactiveStyle\n\t\t\t};\n\t\t})();\n\t\tconst resolvedClassName = (() => {\n\t\t\tconst baseClassName = className;\n\t\t\tconst activeClassName = resolvedActiveProps.className;\n\t\t\tconst inactiveClassName = resolvedInactiveProps.className;\n\t\t\tif (!baseClassName && !activeClassName && !inactiveClassName) return \"\";\n\t\t\tlet out = \"\";\n\t\t\tif (baseClassName) out = baseClassName;\n\t\t\tif (activeClassName) out = out ? `${out} ${activeClassName}` : activeClassName;\n\t\t\tif (inactiveClassName) out = out ? `${out} ${inactiveClassName}` : inactiveClassName;\n\t\t\treturn out;\n\t\t})();\n\t\treturn {\n\t\t\t...propsSafeToSpread,\n\t\t\t...resolvedActiveProps,\n\t\t\t...resolvedInactiveProps,\n\t\t\thref: hrefOption?.href,\n\t\t\tref: innerRef,\n\t\t\tdisabled: !!disabled,\n\t\t\ttarget,\n\t\t\t...resolvedStyle && { style: resolvedStyle },\n\t\t\t...resolvedClassName && { className: resolvedClassName },\n\t\t\t...disabled && STATIC_DISABLED_PROPS,\n\t\t\t...isActive && STATIC_ACTIVE_PROPS\n\t\t};\n\t}\n\tconst isHydrated = useHydrated();\n\tconst _options = React$1.useMemo(() => options, [\n\t\trouter,\n\t\toptions.from,\n\t\toptions._fromLocation,\n\t\toptions.hash,\n\t\toptions.to,\n\t\toptions.search,\n\t\toptions.params,\n\t\toptions.state,\n\t\toptions.mask,\n\t\toptions.unsafeRelative\n\t]);\n\tconst currentLocation = useStore(router.stores.location, (l) => l, (prev, next) => prev.href === next.href);\n\tconst next = React$1.useMemo(() => {\n\t\tconst opts = {\n\t\t\t_fromLocation: currentLocation,\n\t\t\t..._options\n\t\t};\n\t\treturn router.buildLocation(opts);\n\t}, [\n\t\trouter,\n\t\tcurrentLocation,\n\t\t_options\n\t]);\n\tconst hrefOptionPublicHref = next.maskedLocation ? next.maskedLocation.publicHref : next.publicHref;\n\tconst hrefOptionExternal = next.maskedLocation ? next.maskedLocation.external : next.external;\n\tconst hrefOption = React$1.useMemo(() => getHrefOption(hrefOptionPublicHref, hrefOptionExternal, router.history, disabled), [\n\t\tdisabled,\n\t\threfOptionExternal,\n\t\threfOptionPublicHref,\n\t\trouter.history\n\t]);\n\tconst externalLink = React$1.useMemo(() => {\n\t\tif (hrefOption?.external) {\n\t\t\tif (isDangerousProtocol(hrefOption.href, router.protocolAllowlist)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${hrefOption.href}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn hrefOption.href;\n\t\t}\n\t\tif (isSafeInternal(to)) return void 0;\n\t\tif (typeof to !== \"string\" || to.indexOf(\":\") === -1) return void 0;\n\t\ttry {\n\t\t\tnew URL(to);\n\t\t\tif (isDangerousProtocol(to, router.protocolAllowlist)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn to;\n\t\t} catch {}\n\t}, [\n\t\tto,\n\t\threfOption,\n\t\trouter.protocolAllowlist\n\t]);\n\tconst isActive = React$1.useMemo(() => {\n\t\tif (externalLink) return false;\n\t\tif (activeOptions?.exact) {\n\t\t\tif (!exactPathTest(currentLocation.pathname, next.pathname, router.basepath)) return false;\n\t\t} else {\n\t\t\tconst currentPathSplit = removeTrailingSlash(currentLocation.pathname, router.basepath);\n\t\t\tconst nextPathSplit = removeTrailingSlash(next.pathname, router.basepath);\n\t\t\tif (!(currentPathSplit.startsWith(nextPathSplit) && (currentPathSplit.length === nextPathSplit.length || currentPathSplit[nextPathSplit.length] === \"/\"))) return false;\n\t\t}\n\t\tif (activeOptions?.includeSearch ?? true) {\n\t\t\tif (!deepEqual(currentLocation.search, next.search, {\n\t\t\t\tpartial: !activeOptions?.exact,\n\t\t\t\tignoreUndefined: !activeOptions?.explicitUndefined\n\t\t\t})) return false;\n\t\t}\n\t\tif (activeOptions?.includeHash) return isHydrated && currentLocation.hash === next.hash;\n\t\treturn true;\n\t}, [\n\t\tactiveOptions?.exact,\n\t\tactiveOptions?.explicitUndefined,\n\t\tactiveOptions?.includeHash,\n\t\tactiveOptions?.includeSearch,\n\t\tcurrentLocation,\n\t\texternalLink,\n\t\tisHydrated,\n\t\tnext.hash,\n\t\tnext.pathname,\n\t\tnext.search,\n\t\trouter.basepath\n\t]);\n\tconst resolvedActiveProps = isActive ? functionalUpdate(activeProps, {}) ?? STATIC_ACTIVE_OBJECT : STATIC_EMPTY_OBJECT;\n\tconst resolvedInactiveProps = isActive ? STATIC_EMPTY_OBJECT : functionalUpdate(inactiveProps, {}) ?? STATIC_EMPTY_OBJECT;\n\tconst resolvedClassName = [\n\t\tclassName,\n\t\tresolvedActiveProps.className,\n\t\tresolvedInactiveProps.className\n\t].filter(Boolean).join(\" \");\n\tconst resolvedStyle = (style || resolvedActiveProps.style || resolvedInactiveProps.style) && {\n\t\t...style,\n\t\t...resolvedActiveProps.style,\n\t\t...resolvedInactiveProps.style\n\t};\n\tconst [isTransitioning, setIsTransitioning] = React$1.useState(false);\n\tconst hasRenderFetched = React$1.useRef(false);\n\tconst preload = options.reloadDocument || externalLink ? false : userPreload ?? router.options.defaultPreload;\n\tconst preloadDelay = userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0;\n\tconst doPreload = React$1.useCallback(() => {\n\t\trouter.preloadRoute({\n\t\t\t..._options,\n\t\t\t_builtLocation: next\n\t\t}).catch((err) => {\n\t\t\tconsole.warn(err);\n\t\t\tconsole.warn(preloadWarning);\n\t\t});\n\t}, [\n\t\trouter,\n\t\t_options,\n\t\tnext\n\t]);\n\tuseIntersectionObserver(innerRef, React$1.useCallback((entry) => {\n\t\tif (entry?.isIntersecting) doPreload();\n\t}, [doPreload]), intersectionObserverOptions, { disabled: !!disabled || !(preload === \"viewport\") });\n\tReact$1.useEffect(() => {\n\t\tif (hasRenderFetched.current) return;\n\t\tif (!disabled && preload === \"render\") {\n\t\t\tdoPreload();\n\t\t\thasRenderFetched.current = true;\n\t\t}\n\t}, [\n\t\tdisabled,\n\t\tdoPreload,\n\t\tpreload\n\t]);\n\tconst handleClick = (e) => {\n\t\tconst elementTarget = e.currentTarget.getAttribute(\"target\");\n\t\tconst effectiveTarget = target !== void 0 ? target : elementTarget;\n\t\tif (!disabled && !isCtrlEvent(e) && !e.defaultPrevented && (!effectiveTarget || effectiveTarget === \"_self\") && e.button === 0) {\n\t\t\te.preventDefault();\n\t\t\tflushSync(() => {\n\t\t\t\tsetIsTransitioning(true);\n\t\t\t});\n\t\t\tconst unsub = router.subscribe(\"onResolved\", () => {\n\t\t\t\tunsub();\n\t\t\t\tsetIsTransitioning(false);\n\t\t\t});\n\t\t\trouter.navigate({\n\t\t\t\t..._options,\n\t\t\t\treplace,\n\t\t\t\tresetScroll,\n\t\t\t\thashScrollIntoView,\n\t\t\t\tstartTransition,\n\t\t\t\tviewTransition,\n\t\t\t\tignoreBlocker\n\t\t\t});\n\t\t}\n\t};\n\tif (externalLink) return {\n\t\t...propsSafeToSpread,\n\t\tref: innerRef,\n\t\thref: externalLink,\n\t\t...children && { children },\n\t\t...target && { target },\n\t\t...disabled && { disabled },\n\t\t...style && { style },\n\t\t...className && { className },\n\t\t...onClick && { onClick },\n\t\t...onBlur && { onBlur },\n\t\t...onFocus && { onFocus },\n\t\t...onMouseEnter && { onMouseEnter },\n\t\t...onMouseLeave && { onMouseLeave },\n\t\t...onTouchStart && { onTouchStart }\n\t};\n\tconst enqueueIntentPreload = (e) => {\n\t\tif (disabled || preload !== \"intent\") return;\n\t\tif (!preloadDelay) {\n\t\t\tdoPreload();\n\t\t\treturn;\n\t\t}\n\t\tconst eventTarget = e.currentTarget;\n\t\tif (timeoutMap.has(eventTarget)) return;\n\t\tconst id = setTimeout(() => {\n\t\t\ttimeoutMap.delete(eventTarget);\n\t\t\tdoPreload();\n\t\t}, preloadDelay);\n\t\ttimeoutMap.set(eventTarget, id);\n\t};\n\tconst handleTouchStart = (_) => {\n\t\tif (disabled || preload !== \"intent\") return;\n\t\tdoPreload();\n\t};\n\tconst handleLeave = (e) => {\n\t\tif (disabled || !preload || !preloadDelay) return;\n\t\tconst eventTarget = e.currentTarget;\n\t\tconst id = timeoutMap.get(eventTarget);\n\t\tif (id) {\n\t\t\tclearTimeout(id);\n\t\t\ttimeoutMap.delete(eventTarget);\n\t\t}\n\t};\n\treturn {\n\t\t...propsSafeToSpread,\n\t\t...resolvedActiveProps,\n\t\t...resolvedInactiveProps,\n\t\thref: hrefOption?.href,\n\t\tref: innerRef,\n\t\tonClick: composeHandlers([onClick, handleClick]),\n\t\tonBlur: composeHandlers([onBlur, handleLeave]),\n\t\tonFocus: composeHandlers([onFocus, enqueueIntentPreload]),\n\t\tonMouseEnter: composeHandlers([onMouseEnter, enqueueIntentPreload]),\n\t\tonMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n\t\tonTouchStart: composeHandlers([onTouchStart, handleTouchStart]),\n\t\tdisabled: !!disabled,\n\t\ttarget,\n\t\t...resolvedStyle && { style: resolvedStyle },\n\t\t...resolvedClassName && { className: resolvedClassName },\n\t\t...disabled && STATIC_DISABLED_PROPS,\n\t\t...isActive && STATIC_ACTIVE_PROPS,\n\t\t...isHydrated && isTransitioning && STATIC_TRANSITIONING_PROPS\n\t};\n}\nvar STATIC_EMPTY_OBJECT = {};\nvar STATIC_ACTIVE_OBJECT = { className: \"active\" };\nvar STATIC_DISABLED_PROPS = {\n\trole: \"link\",\n\t\"aria-disabled\": true\n};\nvar STATIC_ACTIVE_PROPS = {\n\t\"data-status\": \"active\",\n\t\"aria-current\": \"page\"\n};\nvar STATIC_TRANSITIONING_PROPS = { \"data-transitioning\": \"transitioning\" };\nvar timeoutMap = /* @__PURE__ */ new WeakMap();\nvar intersectionObserverOptions = { rootMargin: \"100px\" };\nvar composeHandlers = (handlers) => (e) => {\n\tfor (const handler of handlers) {\n\t\tif (!handler) continue;\n\t\tif (e.defaultPrevented) return;\n\t\thandler(e);\n\t}\n};\nfunction getHrefOption(publicHref, external, history, disabled) {\n\tif (disabled) return void 0;\n\tif (external) return {\n\t\thref: publicHref,\n\t\texternal: true\n\t};\n\treturn {\n\t\thref: history.createHref(publicHref) || \"/\",\n\t\texternal: false\n\t};\n}\nfunction isSafeInternal(to) {\n\tif (typeof to !== \"string\") return false;\n\tconst zero = to.charCodeAt(0);\n\tif (zero === 47) return to.charCodeAt(1) !== 47;\n\treturn zero === 46;\n}\n/**\n* Creates a typed Link-like component that preserves TanStack Router's\n* navigation semantics and type-safety while delegating rendering to the\n* provided host component.\n*\n* Useful for integrating design system anchors/buttons while keeping\n* router-aware props (eg. `to`, `params`, `search`, `preload`).\n*\n* @param Comp The host component to render (eg. a design-system Link/Button)\n* @returns A router-aware component with the same API as `Link`.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-link\n*/\nfunction createLink(Comp) {\n\treturn React$1.forwardRef(function CreatedLink(props, ref) {\n\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t...props,\n\t\t\t_asChild: Comp,\n\t\t\tref\n\t\t});\n\t});\n}\n/**\n* A strongly-typed anchor component for declarative navigation.\n* Handles path, search, hash and state updates with optional route preloading\n* and active-state styling.\n*\n* Props:\n* - `preload`: Controls route preloading (eg. 'intent', 'render', 'viewport', true/false)\n* - `preloadDelay`: Delay in ms before preloading on hover\n* - `activeProps`/`inactiveProps`: Additional props merged when link is active/inactive\n* - `resetScroll`/`hashScrollIntoView`: Control scroll behavior on navigation\n* - `viewTransition`/`startTransition`: Use View Transitions/React transitions for navigation\n* - `ignoreBlocker`: Bypass registered blockers\n*\n* @returns An anchor-like element that navigates without full page reloads.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkComponent\n*/\nvar Link = React$1.forwardRef((props, ref) => {\n\tconst { _asChild, ...rest } = props;\n\tconst { type: _type, ...linkProps } = useLinkProps(rest, ref);\n\tconst children = typeof rest.children === \"function\" ? rest.children({ isActive: linkProps[\"data-status\"] === \"active\" }) : rest.children;\n\tif (!_asChild) {\n\t\tconst { disabled: _, ...rest } = linkProps;\n\t\treturn React$1.createElement(\"a\", rest, children);\n\t}\n\treturn React$1.createElement(_asChild, linkProps, children);\n});\nfunction isCtrlEvent(e) {\n\treturn !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey);\n}\n/**\n* Validate and reuse navigation options for `Link`, `navigate` or `redirect`.\n* Accepts a literal options object and returns it typed for later spreading.\n* @example\n* const opts = linkOptions({ to: '/dashboard', search: { tab: 'home' } })\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkOptions\n*/\nvar linkOptions = (options) => {\n\treturn options;\n};\n/**\n* Type-check a literal object for use with `Link`, `navigate` or `redirect`.\n* Use to validate and reuse navigation options across your app.\n* @example\n* const opts = linkOptions({ to: '/dashboard', search: { tab: 'home' } })\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkOptions\n*/\n//#endregion\nexport { Link, createLink, linkOptions, useLinkProps };\n\n//# sourceMappingURL=link.js.map","import { useRouter } from \"./useRouter.js\";\nimport { useMatch } from \"./useMatch.js\";\nimport { useLoaderData } from \"./useLoaderData.js\";\nimport { useLoaderDeps } from \"./useLoaderDeps.js\";\nimport { useParams } from \"./useParams.js\";\nimport { useSearch } from \"./useSearch.js\";\nimport { useNavigate } from \"./useNavigate.js\";\nimport { useRouteContext } from \"./useRouteContext.js\";\nimport { Link } from \"./link.js\";\nimport { BaseRootRoute, BaseRoute, BaseRouteApi, notFound } from \"@tanstack/router-core\";\nimport React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/route.tsx\n/**\n* Returns a route-specific API that exposes type-safe hooks pre-bound\n* to a single route ID. Useful for consuming a route's APIs from files\n* where the route object isn't directly imported (e.g. code-split files).\n*\n* @param id Route ID string literal for the target route.\n* @returns A `RouteApi` instance bound to the given route ID.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/getRouteApiFunction\n*/\nfunction getRouteApi(id) {\n\treturn new RouteApi({ id });\n}\nvar RouteApi = class extends BaseRouteApi {\n\t/**\n\t* @deprecated Use the `getRouteApi` function instead.\n\t*/\n\tconstructor({ id }) {\n\t\tsuper({ id });\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstrict: false\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstrict: false\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: useRouter().routesById[this.id].fullPath });\n\t\t};\n\t\tthis.notFound = (opts) => {\n\t\t\treturn notFound({\n\t\t\t\trouteId: this.id,\n\t\t\t\t...opts\n\t\t\t});\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\tconst fullPath = useRouter().routesById[this.id].fullPath;\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\nvar Route = class extends BaseRoute {\n\t/**\n\t* @deprecated Use the `createRoute` function instead.\n\t*/\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: this.fullPath });\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: this.fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Creates a non-root Route instance for code-based routing.\n*\n* Use this to define a route that will be composed into a route tree\n* (typically via a parent route's `addChildren`). If you're using file-based\n* routing, prefer `createFileRoute`.\n*\n* @param options Route options (path, component, loader, context, etc.).\n* @returns A Route instance to be attached to the route tree.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouteFunction\n*/\nfunction createRoute(options) {\n\treturn new Route(options);\n}\n/**\n* Creates a root route factory that requires a router context type.\n*\n* Use when your root route expects `context` to be provided to `createRouter`.\n* The returned function behaves like `createRootRoute` but enforces a context type.\n*\n* @returns A factory function to configure and return a root route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRootRouteWithContextFunction\n*/\nfunction createRootRouteWithContext() {\n\treturn (options) => {\n\t\treturn createRootRoute(options);\n\t};\n}\n/**\n* @deprecated Use the `createRootRouteWithContext` function instead.\n*/\nvar rootRouteWithContext = createRootRouteWithContext;\nvar RootRoute = class extends BaseRootRoute {\n\t/**\n\t* @deprecated `RootRoute` is now an internal implementation detail. Use `createRootRoute()` instead.\n\t*/\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: this.fullPath });\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: this.fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Creates a root Route instance used to build your route tree.\n*\n* Typically paired with `createRouter({ routeTree })`. If you need to require\n* a typed router context, use `createRootRouteWithContext` instead.\n*\n* @param options Root route options (component, error, pending, etc.).\n* @returns A root route instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRootRouteFunction\n*/\nfunction createRootRoute(options) {\n\treturn new RootRoute(options);\n}\nfunction createRouteMask(opts) {\n\treturn opts;\n}\nvar NotFoundRoute = class extends Route {\n\tconstructor(options) {\n\t\tsuper({\n\t\t\t...options,\n\t\t\tid: \"404\"\n\t\t});\n\t}\n};\n//#endregion\nexport { NotFoundRoute, RootRoute, Route, RouteApi, createRootRoute, createRootRouteWithContext, createRoute, createRouteMask, getRouteApi, rootRouteWithContext };\n\n//# sourceMappingURL=route.js.map","import { CatchBoundary } from \"./CatchBoundary.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { isNotFound } from \"@tanstack/router-core\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/not-found.tsx\nfunction CatchNotFound(props) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst resetKey = `not-found-${router.stores.location.get().pathname}-${router.stores.status.get()}`;\n\t\treturn /* @__PURE__ */ jsx(CatchBoundary, {\n\t\t\tgetResetKey: () => resetKey,\n\t\t\tonCatch: (error, errorInfo) => {\n\t\t\t\tif (isNotFound(error)) props.onCatch?.(error, errorInfo);\n\t\t\t\telse throw error;\n\t\t\t},\n\t\t\terrorComponent: ({ error }) => {\n\t\t\t\tif (isNotFound(error)) return props.fallback?.(error);\n\t\t\t\telse throw error;\n\t\t\t},\n\t\t\tchildren: props.children\n\t\t});\n\t}\n\tconst resetKey = `not-found-${useStore(router.stores.location, (location) => location.pathname)}-${useStore(router.stores.status, (status) => status)}`;\n\treturn /* @__PURE__ */ jsx(CatchBoundary, {\n\t\tgetResetKey: () => resetKey,\n\t\tonCatch: (error, errorInfo) => {\n\t\t\tif (isNotFound(error)) props.onCatch?.(error, errorInfo);\n\t\t\telse throw error;\n\t\t},\n\t\terrorComponent: ({ error }) => {\n\t\t\tif (isNotFound(error)) return props.fallback?.(error);\n\t\t\telse throw error;\n\t\t},\n\t\tchildren: props.children\n\t});\n}\nfunction DefaultGlobalNotFound() {\n\treturn /* @__PURE__ */ jsx(\"p\", { children: \"Not Found\" });\n}\n//#endregion\nexport { CatchNotFound, DefaultGlobalNotFound };\n\n//# sourceMappingURL=not-found.js.map","import \"react\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\n//#region src/SafeFragment.tsx\nfunction SafeFragment(props) {\n\treturn /* @__PURE__ */ jsx(Fragment, { children: props.children });\n}\n//#endregion\nexport { SafeFragment };\n\n//# sourceMappingURL=SafeFragment.js.map","import { DefaultGlobalNotFound } from \"./not-found.js\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/renderRouteNotFound.tsx\n/**\n* Renders a not found component for a route when no matching route is found.\n*\n* @param router - The router instance containing the route configuration\n* @param route - The route that triggered the not found state\n* @param data - Additional data to pass to the not found component\n* @returns The rendered not found component or a default fallback component\n*/\nfunction renderRouteNotFound(router, route, data) {\n\tif (!route.options.notFoundComponent) {\n\t\tif (router.options.defaultNotFoundComponent) return /* @__PURE__ */ jsx(router.options.defaultNotFoundComponent, { ...data });\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (!route.options.notFoundComponent) console.warn(`Warning: A notFoundError was encountered on the route with ID \"${route.id}\", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<p>Not Found</p>)`);\n\t\t}\n\t\treturn /* @__PURE__ */ jsx(DefaultGlobalNotFound, {});\n\t}\n\treturn /* @__PURE__ */ jsx(route.options.notFoundComponent, { ...data });\n}\n//#endregion\nexport { renderRouteNotFound };\n\n//# sourceMappingURL=renderRouteNotFound.js.map","\"use client\";\nimport { useLayoutEffect } from \"./utils.js\";\nimport { CatchBoundary, ErrorComponent } from \"./CatchBoundary.js\";\nimport { ClientOnly } from \"./ClientOnly.js\";\nimport { matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { CatchNotFound } from \"./not-found.js\";\nimport { SafeFragment } from \"./SafeFragment.js\";\nimport { renderRouteNotFound } from \"./renderRouteNotFound.js\";\nimport { ScrollRestoration } from \"./scroll-restoration.js\";\nimport { createControlledPromise, getLocationChangeInfo, invariant, isNotFound, isRedirect, rootRouteId } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/Match.tsx\nvar matchViewFieldsEqual = (a, b) => a.routeId === b.routeId && a._displayPending === b._displayPending;\nvar outletMatchSelectionEqual = (a, b) => a[0] === b[0] && a[1] === b[1];\nvar Match = React$1.memo(function MatchImpl({ matchId }) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst match = router.stores.matchStores.get(matchId)?.get();\n\t\tif (!match) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find match for matchId \"${matchId}\". Please file an issue!`);\n\t\t\tinvariant();\n\t\t}\n\t\tconst routeId = match.routeId;\n\t\tconst parentRouteId = router.routesById[routeId].parentRoute?.id;\n\t\treturn /* @__PURE__ */ jsx(MatchView, {\n\t\t\trouter,\n\t\t\tmatchId,\n\t\t\tresetKey: router.stores.loadedAt.get(),\n\t\t\tmatchState: {\n\t\t\t\trouteId,\n\t\t\t\tssr: match.ssr,\n\t\t\t\t_displayPending: match._displayPending,\n\t\t\t\tparentRouteId\n\t\t\t}\n\t\t});\n\t}\n\tconst matchStore = router.stores.matchStores.get(matchId);\n\tif (!matchStore) {\n\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find match for matchId \"${matchId}\". Please file an issue!`);\n\t\tinvariant();\n\t}\n\tconst resetKey = useStore(router.stores.loadedAt, (loadedAt) => loadedAt);\n\tconst match = useStore(matchStore, (value) => value, matchViewFieldsEqual);\n\treturn /* @__PURE__ */ jsx(MatchView, {\n\t\trouter,\n\t\tmatchId,\n\t\tresetKey,\n\t\tmatchState: React$1.useMemo(() => {\n\t\t\tconst routeId = match.routeId;\n\t\t\tconst parentRouteId = router.routesById[routeId].parentRoute?.id;\n\t\t\treturn {\n\t\t\t\trouteId,\n\t\t\t\tssr: match.ssr,\n\t\t\t\t_displayPending: match._displayPending,\n\t\t\t\tparentRouteId\n\t\t\t};\n\t\t}, [\n\t\t\tmatch._displayPending,\n\t\t\tmatch.routeId,\n\t\t\tmatch.ssr,\n\t\t\trouter.routesById\n\t\t])\n\t});\n});\nfunction MatchView({ router, matchId, resetKey, matchState }) {\n\tconst route = router.routesById[matchState.routeId];\n\tconst PendingComponent = route.options.pendingComponent ?? router.options.defaultPendingComponent;\n\tconst pendingElement = PendingComponent ? /* @__PURE__ */ jsx(PendingComponent, {}) : null;\n\tconst routeErrorComponent = route.options.errorComponent ?? router.options.defaultErrorComponent;\n\tconst routeOnCatch = route.options.onCatch ?? router.options.defaultOnCatch;\n\tconst routeNotFoundComponent = route.isRoot ? route.options.notFoundComponent ?? router.options.notFoundRoute?.options.component : route.options.notFoundComponent;\n\tconst resolvedNoSsr = matchState.ssr === false || matchState.ssr === \"data-only\";\n\tconst ResolvedSuspenseBoundary = (!route.isRoot || route.options.wrapInSuspense || resolvedNoSsr) && (route.options.wrapInSuspense ?? PendingComponent ?? (route.options.errorComponent?.preload || resolvedNoSsr)) ? React$1.Suspense : SafeFragment;\n\tconst ResolvedCatchBoundary = routeErrorComponent ? CatchBoundary : SafeFragment;\n\tconst ResolvedNotFoundBoundary = routeNotFoundComponent ? CatchNotFound : SafeFragment;\n\treturn /* @__PURE__ */ jsxs(route.isRoot ? route.options.shellComponent ?? SafeFragment : SafeFragment, { children: [/* @__PURE__ */ jsx(matchContext.Provider, {\n\t\tvalue: matchId,\n\t\tchildren: /* @__PURE__ */ jsx(ResolvedSuspenseBoundary, {\n\t\t\tfallback: pendingElement,\n\t\t\tchildren: /* @__PURE__ */ jsx(ResolvedCatchBoundary, {\n\t\t\t\tgetResetKey: () => resetKey,\n\t\t\t\terrorComponent: routeErrorComponent || ErrorComponent,\n\t\t\t\tonCatch: (error, errorInfo) => {\n\t\t\t\t\tif (isNotFound(error)) {\n\t\t\t\t\t\terror.routeId ??= matchState.routeId;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Warning: Error in route match: ${matchId}`);\n\t\t\t\t\trouteOnCatch?.(error, errorInfo);\n\t\t\t\t},\n\t\t\t\tchildren: /* @__PURE__ */ jsx(ResolvedNotFoundBoundary, {\n\t\t\t\t\tfallback: (error) => {\n\t\t\t\t\t\terror.routeId ??= matchState.routeId;\n\t\t\t\t\t\tif (!routeNotFoundComponent || error.routeId && error.routeId !== matchState.routeId || !error.routeId && !route.isRoot) throw error;\n\t\t\t\t\t\treturn React$1.createElement(routeNotFoundComponent, error);\n\t\t\t\t\t},\n\t\t\t\t\tchildren: resolvedNoSsr || matchState._displayPending ? /* @__PURE__ */ jsx(ClientOnly, {\n\t\t\t\t\t\tfallback: pendingElement,\n\t\t\t\t\t\tchildren: /* @__PURE__ */ jsx(MatchInner, { matchId })\n\t\t\t\t\t}) : /* @__PURE__ */ jsx(MatchInner, { matchId })\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t}), matchState.parentRouteId === rootRouteId ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(OnRendered, {}), router.options.scrollRestoration && (isServer ?? router.isServer) ? /* @__PURE__ */ jsx(ScrollRestoration, {}) : null] }) : null] });\n}\nfunction OnRendered() {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) return null;\n\tconst prevResolvedLocationRef = React$1.useRef();\n\tuseLayoutEffect(() => {\n\t\tconst currentResolvedLocation = router.stores.resolvedLocation.get();\n\t\tconst previousResolvedLocation = prevResolvedLocationRef.current;\n\t\tif (currentResolvedLocation && (!previousResolvedLocation || previousResolvedLocation.href !== currentResolvedLocation.href)) router.emit({\n\t\t\ttype: \"onRendered\",\n\t\t\t...getLocationChangeInfo(router.stores.location.get(), previousResolvedLocation ?? currentResolvedLocation)\n\t\t});\n\t\tprevResolvedLocationRef.current = currentResolvedLocation;\n\t}, [useStore(router.stores.resolvedLocation, (resolvedLocation) => resolvedLocation?.state.__TSR_key), router]);\n\treturn null;\n}\nvar MatchInner = React$1.memo(function MatchInnerImpl({ matchId }) {\n\tconst router = useRouter();\n\tconst getMatchPromise = (match, key) => {\n\t\treturn router.getMatch(match.id)?._nonReactive[key] ?? match._nonReactive[key];\n\t};\n\tif (isServer ?? router.isServer) {\n\t\tconst match = router.stores.matchStores.get(matchId)?.get();\n\t\tif (!match) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find match for matchId \"${matchId}\". Please file an issue!`);\n\t\t\tinvariant();\n\t\t}\n\t\tconst routeId = match.routeId;\n\t\tconst route = router.routesById[routeId];\n\t\tconst remountDeps = (router.routesById[routeId].options.remountDeps ?? router.options.defaultRemountDeps)?.({\n\t\t\trouteId,\n\t\t\tloaderDeps: match.loaderDeps,\n\t\t\tparams: match._strictParams,\n\t\t\tsearch: match._strictSearch\n\t\t});\n\t\tconst key = remountDeps ? JSON.stringify(remountDeps) : void 0;\n\t\tconst Comp = route.options.component ?? router.options.defaultComponent;\n\t\tconst out = Comp ? /* @__PURE__ */ jsx(Comp, {}, key) : /* @__PURE__ */ jsx(Outlet, {});\n\t\tif (match._displayPending) throw getMatchPromise(match, \"displayPendingPromise\");\n\t\tif (match._forcePending) throw getMatchPromise(match, \"minPendingPromise\");\n\t\tif (match.status === \"pending\") throw getMatchPromise(match, \"loadPromise\");\n\t\tif (match.status === \"notFound\") {\n\t\t\tif (!isNotFound(match.error)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Expected a notFound error\");\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\treturn renderRouteNotFound(router, route, match.error);\n\t\t}\n\t\tif (match.status === \"redirected\") {\n\t\t\tif (!isRedirect(match.error)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Expected a redirect error\");\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\tthrow getMatchPromise(match, \"loadPromise\");\n\t\t}\n\t\tif (match.status === \"error\") return /* @__PURE__ */ jsx((route.options.errorComponent ?? router.options.defaultErrorComponent) || ErrorComponent, {\n\t\t\terror: match.error,\n\t\t\treset: void 0,\n\t\t\tinfo: { componentStack: \"\" }\n\t\t});\n\t\treturn out;\n\t}\n\tconst matchStore = router.stores.matchStores.get(matchId);\n\tif (!matchStore) {\n\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find match for matchId \"${matchId}\". Please file an issue!`);\n\t\tinvariant();\n\t}\n\tconst match = useStore(matchStore, (value) => value);\n\tconst routeId = match.routeId;\n\tconst route = router.routesById[routeId];\n\tconst key = React$1.useMemo(() => {\n\t\tconst remountDeps = (router.routesById[routeId].options.remountDeps ?? router.options.defaultRemountDeps)?.({\n\t\t\trouteId,\n\t\t\tloaderDeps: match.loaderDeps,\n\t\t\tparams: match._strictParams,\n\t\t\tsearch: match._strictSearch\n\t\t});\n\t\treturn remountDeps ? JSON.stringify(remountDeps) : void 0;\n\t}, [\n\t\trouteId,\n\t\tmatch.loaderDeps,\n\t\tmatch._strictParams,\n\t\tmatch._strictSearch,\n\t\trouter.options.defaultRemountDeps,\n\t\trouter.routesById\n\t]);\n\tconst out = React$1.useMemo(() => {\n\t\tconst Comp = route.options.component ?? router.options.defaultComponent;\n\t\tif (Comp) return /* @__PURE__ */ jsx(Comp, {}, key);\n\t\treturn /* @__PURE__ */ jsx(Outlet, {});\n\t}, [\n\t\tkey,\n\t\troute.options.component,\n\t\trouter.options.defaultComponent\n\t]);\n\tif (match._displayPending) throw getMatchPromise(match, \"displayPendingPromise\");\n\tif (match._forcePending) throw getMatchPromise(match, \"minPendingPromise\");\n\tif (match.status === \"pending\") {\n\t\tconst pendingMinMs = route.options.pendingMinMs ?? router.options.defaultPendingMinMs;\n\t\tif (pendingMinMs) {\n\t\t\tconst routerMatch = router.getMatch(match.id);\n\t\t\tif (routerMatch && !routerMatch._nonReactive.minPendingPromise) {\n\t\t\t\tif (!(isServer ?? router.isServer)) {\n\t\t\t\t\tconst minPendingPromise = createControlledPromise();\n\t\t\t\t\trouterMatch._nonReactive.minPendingPromise = minPendingPromise;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tminPendingPromise.resolve();\n\t\t\t\t\t\trouterMatch._nonReactive.minPendingPromise = void 0;\n\t\t\t\t\t}, pendingMinMs);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow getMatchPromise(match, \"loadPromise\");\n\t}\n\tif (match.status === \"notFound\") {\n\t\tif (!isNotFound(match.error)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Expected a notFound error\");\n\t\t\tinvariant();\n\t\t}\n\t\treturn renderRouteNotFound(router, route, match.error);\n\t}\n\tif (match.status === \"redirected\") {\n\t\tif (!isRedirect(match.error)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Expected a redirect error\");\n\t\t\tinvariant();\n\t\t}\n\t\tthrow getMatchPromise(match, \"loadPromise\");\n\t}\n\tif (match.status === \"error\") {\n\t\tif (isServer ?? router.isServer) return /* @__PURE__ */ jsx((route.options.errorComponent ?? router.options.defaultErrorComponent) || ErrorComponent, {\n\t\t\terror: match.error,\n\t\t\treset: void 0,\n\t\t\tinfo: { componentStack: \"\" }\n\t\t});\n\t\tthrow match.error;\n\t}\n\treturn out;\n});\n/**\n* Render the next child match in the route tree. Typically used inside\n* a route component to render nested routes.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/outletComponent\n*/\nvar Outlet = React$1.memo(function OutletImpl() {\n\tconst router = useRouter();\n\tconst matchId = React$1.useContext(matchContext);\n\tlet routeId;\n\tlet parentGlobalNotFound = false;\n\tlet childMatchId;\n\tif (isServer ?? router.isServer) {\n\t\tconst matches = router.stores.matches.get();\n\t\tconst parentIndex = matchId ? matches.findIndex((match) => match.id === matchId) : -1;\n\t\tconst parentMatch = parentIndex >= 0 ? matches[parentIndex] : void 0;\n\t\trouteId = parentMatch?.routeId;\n\t\tparentGlobalNotFound = parentMatch?.globalNotFound ?? false;\n\t\tchildMatchId = parentIndex >= 0 ? matches[parentIndex + 1]?.id : void 0;\n\t} else {\n\t\tconst parentMatchStore = matchId ? router.stores.matchStores.get(matchId) : void 0;\n\t\t[routeId, parentGlobalNotFound] = useStore(parentMatchStore, (match) => [match?.routeId, match?.globalNotFound ?? false], outletMatchSelectionEqual);\n\t\tchildMatchId = useStore(router.stores.matchesId, (ids) => {\n\t\t\treturn ids[ids.findIndex((id) => id === matchId) + 1];\n\t\t});\n\t}\n\tconst route = routeId ? router.routesById[routeId] : void 0;\n\tconst pendingElement = router.options.defaultPendingComponent ? /* @__PURE__ */ jsx(router.options.defaultPendingComponent, {}) : null;\n\tif (parentGlobalNotFound) {\n\t\tif (!route) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(\"Invariant failed: Could not resolve route for Outlet render\");\n\t\t\tinvariant();\n\t\t}\n\t\treturn renderRouteNotFound(router, route, void 0);\n\t}\n\tif (!childMatchId) return null;\n\tconst nextMatch = /* @__PURE__ */ jsx(Match, { matchId: childMatchId });\n\tif (routeId === rootRouteId) return /* @__PURE__ */ jsx(React$1.Suspense, {\n\t\tfallback: pendingElement,\n\t\tchildren: nextMatch\n\t});\n\treturn nextMatch;\n});\n//#endregion\nexport { Match, Outlet };\n\n//# sourceMappingURL=Match.js.map","\"use client\";\nimport { useLayoutEffect, usePrevious } from \"./utils.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { getLocationChangeInfo, trimPathRight } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { batch, useStore } from \"@tanstack/react-store\";\n//#region src/Transitioner.tsx\nfunction Transitioner() {\n\tconst router = useRouter();\n\tconst mountLoadForRouter = React$1.useRef({\n\t\trouter,\n\t\tmounted: false\n\t});\n\tconst [isTransitioning, setIsTransitioning] = React$1.useState(false);\n\tconst isLoading = useStore(router.stores.isLoading, (value) => value);\n\tconst hasPending = useStore(router.stores.hasPending, (value) => value);\n\tconst previousIsLoading = usePrevious(isLoading);\n\tconst isAnyPending = isLoading || isTransitioning || hasPending;\n\tconst previousIsAnyPending = usePrevious(isAnyPending);\n\tconst isPagePending = isLoading || hasPending;\n\tconst previousIsPagePending = usePrevious(isPagePending);\n\trouter.startTransition = (fn) => {\n\t\tsetIsTransitioning(true);\n\t\tReact$1.startTransition(() => {\n\t\t\tfn();\n\t\t\tsetIsTransitioning(false);\n\t\t});\n\t};\n\tReact$1.useEffect(() => {\n\t\tconst unsub = router.history.subscribe(router.load);\n\t\tconst nextLocation = router.buildLocation({\n\t\t\tto: router.latestLocation.pathname,\n\t\t\tsearch: true,\n\t\t\tparams: true,\n\t\t\thash: true,\n\t\t\tstate: true,\n\t\t\t_includeValidateSearch: true\n\t\t});\n\t\tif (trimPathRight(router.latestLocation.publicHref) !== trimPathRight(nextLocation.publicHref)) router.commitLocation({\n\t\t\t...nextLocation,\n\t\t\treplace: true\n\t\t});\n\t\treturn () => {\n\t\t\tunsub();\n\t\t};\n\t}, [router, router.history]);\n\tuseLayoutEffect(() => {\n\t\tif (typeof window !== \"undefined\" && router.ssr || mountLoadForRouter.current.router === router && mountLoadForRouter.current.mounted) return;\n\t\tmountLoadForRouter.current = {\n\t\t\trouter,\n\t\t\tmounted: true\n\t\t};\n\t\tconst tryLoad = async () => {\n\t\t\ttry {\n\t\t\t\tawait router.load();\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err);\n\t\t\t}\n\t\t};\n\t\ttryLoad();\n\t}, [router]);\n\tuseLayoutEffect(() => {\n\t\tif (previousIsLoading && !isLoading) router.emit({\n\t\t\ttype: \"onLoad\",\n\t\t\t...getLocationChangeInfo(router.stores.location.get(), router.stores.resolvedLocation.get())\n\t\t});\n\t}, [\n\t\tpreviousIsLoading,\n\t\trouter,\n\t\tisLoading\n\t]);\n\tuseLayoutEffect(() => {\n\t\tif (previousIsPagePending && !isPagePending) router.emit({\n\t\t\ttype: \"onBeforeRouteMount\",\n\t\t\t...getLocationChangeInfo(router.stores.location.get(), router.stores.resolvedLocation.get())\n\t\t});\n\t}, [\n\t\tisPagePending,\n\t\tpreviousIsPagePending,\n\t\trouter\n\t]);\n\tuseLayoutEffect(() => {\n\t\tif (previousIsAnyPending && !isAnyPending) {\n\t\t\tconst changeInfo = getLocationChangeInfo(router.stores.location.get(), router.stores.resolvedLocation.get());\n\t\t\trouter.emit({\n\t\t\t\ttype: \"onResolved\",\n\t\t\t\t...changeInfo\n\t\t\t});\n\t\t\tbatch(() => {\n\t\t\t\trouter.stores.status.set(\"idle\");\n\t\t\t\trouter.stores.resolvedLocation.set(router.stores.location.get());\n\t\t\t});\n\t\t}\n\t}, [\n\t\tisAnyPending,\n\t\tpreviousIsAnyPending,\n\t\trouter\n\t]);\n\treturn null;\n}\n//#endregion\nexport { Transitioner };\n\n//# sourceMappingURL=Transitioner.js.map","\"use client\";\nimport { CatchBoundary, ErrorComponent } from \"./CatchBoundary.js\";\nimport { matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { useStructuralSharing } from \"./useMatch.js\";\nimport { Transitioner } from \"./Transitioner.js\";\nimport { SafeFragment } from \"./SafeFragment.js\";\nimport { Match } from \"./Match.js\";\nimport { rootRouteId } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/Matches.tsx\n/**\n* Internal component that renders the router's active match tree with\n* suspense, error, and not-found boundaries. Rendered by `RouterProvider`.\n*/\nfunction Matches() {\n\tconst router = useRouter();\n\tconst PendingComponent = router.routesById[rootRouteId].options.pendingComponent ?? router.options.defaultPendingComponent;\n\tconst pendingElement = PendingComponent ? /* @__PURE__ */ jsx(PendingComponent, {}) : null;\n\tconst inner = /* @__PURE__ */ jsxs((isServer ?? router.isServer) || typeof document !== \"undefined\" && router.ssr ? SafeFragment : React$1.Suspense, {\n\t\tfallback: pendingElement,\n\t\tchildren: [!(isServer ?? router.isServer) && /* @__PURE__ */ jsx(Transitioner, {}), /* @__PURE__ */ jsx(MatchesInner, {})]\n\t});\n\treturn router.options.InnerWrap ? /* @__PURE__ */ jsx(router.options.InnerWrap, { children: inner }) : inner;\n}\nfunction MatchesInner() {\n\tconst router = useRouter();\n\tconst _isServer = isServer ?? router.isServer;\n\tconst matchId = _isServer ? router.stores.firstId.get() : useStore(router.stores.firstId, (id) => id);\n\tconst resetKey = _isServer ? router.stores.loadedAt.get() : useStore(router.stores.loadedAt, (loadedAt) => loadedAt);\n\tconst matchComponent = matchId ? /* @__PURE__ */ jsx(Match, { matchId }) : null;\n\treturn /* @__PURE__ */ jsx(matchContext.Provider, {\n\t\tvalue: matchId,\n\t\tchildren: router.options.disableGlobalCatchBoundary ? matchComponent : /* @__PURE__ */ jsx(CatchBoundary, {\n\t\t\tgetResetKey: () => resetKey,\n\t\t\terrorComponent: ErrorComponent,\n\t\t\tonCatch: process.env.NODE_ENV !== \"production\" ? (error) => {\n\t\t\t\tconsole.warn(`Warning: The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`);\n\t\t\t\tconsole.warn(`Warning: ${error.message || error.toString()}`);\n\t\t\t} : void 0,\n\t\t\tchildren: matchComponent\n\t\t})\n\t});\n}\n/**\n* Create a matcher function for testing locations against route definitions.\n*\n* The returned function accepts standard navigation options (`to`, `params`,\n* `search`, etc.) and returns either `false` (no match) or the matched params\n* object when the route matches the current or pending location.\n*\n* Useful for conditional rendering and active UI states.\n*\n* @returns A `matchRoute(options)` function that returns `false` or params.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchRouteHook\n*/\nfunction useMatchRoute() {\n\tconst router = useRouter();\n\tif (!(isServer ?? router.isServer)) useStore(router.stores.matchRouteDeps, (d) => d);\n\treturn React$1.useCallback((opts) => {\n\t\tconst { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;\n\t\treturn router.matchRoute(rest, {\n\t\t\tpending,\n\t\t\tcaseSensitive,\n\t\t\tfuzzy,\n\t\t\tincludeSearch\n\t\t});\n\t}, [router]);\n}\n/**\n* Component that conditionally renders its children based on whether a route\n* matches the provided `from`/`to` options. If `children` is a function, it\n* receives the matched params object.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/matchRouteComponent\n*/\nfunction MatchRoute(props) {\n\tconst params = useMatchRoute()(props);\n\tif (typeof props.children === \"function\") return props.children(params);\n\treturn params ? props.children : null;\n}\nfunction useMatches(opts) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst matches = router.stores.matches.get();\n\t\treturn opts?.select ? opts.select(matches) : matches;\n\t}\n\treturn useStore(router.stores.matches, useStructuralSharing(opts, router));\n}\n/**\n* Read the full array of active route matches or select a derived subset.\n*\n* Useful for debugging, breadcrumbs, or aggregating metadata across matches.\n*\n* @returns The array of matches (or the selected value).\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchesHook\n*/\n/**\n* Read the full array of active route matches or select a derived subset.\n*\n* Useful for debugging, breadcrumbs, or aggregating metadata across matches.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchesHook\n*/\nfunction useParentMatches(opts) {\n\tconst contextMatchId = React$1.useContext(matchContext);\n\treturn useMatches({\n\t\tselect: (matches) => {\n\t\t\tmatches = matches.slice(0, matches.findIndex((d) => d.id === contextMatchId));\n\t\t\treturn opts?.select ? opts.select(matches) : matches;\n\t\t},\n\t\tstructuralSharing: opts?.structuralSharing\n\t});\n}\n/**\n* Read the array of active route matches that are children of the current\n* match (or selected parent) in the match tree.\n*/\nfunction useChildMatches(opts) {\n\tconst contextMatchId = React$1.useContext(matchContext);\n\treturn useMatches({\n\t\tselect: (matches) => {\n\t\t\tmatches = matches.slice(matches.findIndex((d) => d.id === contextMatchId) + 1);\n\t\t\treturn opts?.select ? opts.select(matches) : matches;\n\t\t},\n\t\tstructuralSharing: opts?.structuralSharing\n\t});\n}\n//#endregion\nexport { MatchRoute, Matches, useChildMatches, useMatchRoute, useMatches, useParentMatches };\n\n//# sourceMappingURL=Matches.js.map","import { createNonReactiveMutableStore, createNonReactiveReadonlyStore } from \"@tanstack/router-core\";\nimport { batch, createAtom } from \"@tanstack/react-store\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/routerStores.ts\nvar getStoreFactory = (opts) => {\n\tif (isServer ?? opts.isServer) return {\n\t\tcreateMutableStore: createNonReactiveMutableStore,\n\t\tcreateReadonlyStore: createNonReactiveReadonlyStore,\n\t\tbatch: (fn) => fn()\n\t};\n\treturn {\n\t\tcreateMutableStore: createAtom,\n\t\tcreateReadonlyStore: createAtom,\n\t\tbatch\n\t};\n};\n//#endregion\nexport { getStoreFactory };\n\n//# sourceMappingURL=routerStores.js.map","import { getStoreFactory } from \"./routerStores.js\";\nimport { RouterCore } from \"@tanstack/router-core\";\n//#region src/router.ts\n/**\n* Creates a new Router instance for React.\n*\n* Pass the returned router to `RouterProvider` to enable routing.\n* Notable options: `routeTree` (your route definitions) and `context`\n* (required if the root route was created with `createRootRouteWithContext`).\n*\n* @param options Router options used to configure the router.\n* @returns A Router instance to be provided to `RouterProvider`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouterFunction\n*/\nvar createRouter = (options) => {\n\treturn new Router(options);\n};\nvar Router = class extends RouterCore {\n\tconstructor(options) {\n\t\tsuper(options, getStoreFactory);\n\t}\n};\n//#endregion\nexport { Router, createRouter };\n\n//# sourceMappingURL=router.js.map","\"use client\";\nimport { routerContext } from \"./routerContext.js\";\nimport { Matches } from \"./Matches.js\";\nimport { hasKeys } from \"@tanstack/router-core\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/RouterProvider.tsx\n/**\n* Low-level provider that places the router into React context and optionally\n* updates router options from props. Most apps should use `RouterProvider`.\n*/\nfunction RouterContextProvider({ router, children, ...rest }) {\n\tif (hasKeys(rest)) router.update({\n\t\t...router.options,\n\t\t...rest,\n\t\tcontext: {\n\t\t\t...router.options.context,\n\t\t\t...rest.context\n\t\t}\n\t});\n\tconst provider = /* @__PURE__ */ jsx(routerContext.Provider, {\n\t\tvalue: router,\n\t\tchildren\n\t});\n\tif (router.options.Wrap) return /* @__PURE__ */ jsx(router.options.Wrap, { children: provider });\n\treturn provider;\n}\n/**\n* Top-level component that renders the active route matches and provides the\n* router to the React tree via context.\n*\n* Accepts the same options as `createRouter` via props to update the router\n* instance after creation.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouterFunction\n*/\nfunction RouterProvider({ router, ...rest }) {\n\treturn /* @__PURE__ */ jsx(RouterContextProvider, {\n\t\trouter,\n\t\t...rest,\n\t\tchildren: /* @__PURE__ */ jsx(Matches, {})\n\t});\n}\n//#endregion\nexport { RouterContextProvider, RouterProvider };\n\n//# sourceMappingURL=RouterProvider.js.map","import type { JsonValue, Message, UserContent } from \"@anvia/core/completion\";\nimport type { UIMessage } from \"@anvia/core/ui\";\nimport type {\n StudioModelSummary,\n StudioPipelineLogEntry,\n StudioSession,\n StudioTraceSummary,\n} from \"../../types\";\nimport type { TranscriptEntry } from \"./modules/shared/types\";\n\nexport const studioModelMetadataKey = \"studioModel\";\nexport const supportedAttachmentTypes = \".png,.jpg,.jpeg,.webp,.gif,.pdf,.txt,.md,.csv,.json\";\n\nexport type PromptAttachment = {\n id: string;\n name: string;\n mediaType: string;\n kind: \"image\" | \"document\";\n data: string;\n size: number;\n};\n\nexport type StudioAgentRunRequest = {\n agentId: string;\n message: string | Message;\n sessionId?: string;\n history?: Message[];\n model?: string;\n stream: true;\n metadata: {\n source: string;\n studioModel?: string;\n };\n};\n\nexport function isPipelineLogEvent(event: unknown): event is {\n type: \"pipeline_log\";\n log: StudioPipelineLogEntry;\n} {\n return isRecord(event) && event.type === \"pipeline_log\" && isRecord(event.log);\n}\n\nexport function isPipelineFinalEvent(event: unknown): event is {\n type: \"pipeline_final\";\n output: unknown;\n} {\n return isRecord(event) && event.type === \"pipeline_final\" && \"output\" in event;\n}\n\nexport function isErrorStreamEvent(event: unknown): event is {\n type: \"error\";\n error: unknown;\n} {\n return isRecord(event) && event.type === \"error\";\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport function enrichTranscriptWithTraceIds(\n transcript: TranscriptEntry[],\n traceSummaries: StudioTraceSummary[],\n): TranscriptEntry[] {\n const sortedTraceIds = [...traceSummaries]\n .sort((left, right) => Date.parse(left.startedAt) - Date.parse(right.startedAt))\n .map((trace) => trace.id);\n let traceIndex = 0;\n let pendingAssistantIndex: number | undefined;\n const next = [...transcript];\n\n function assignPendingTraceId() {\n if (pendingAssistantIndex === undefined) {\n return;\n }\n const traceId = sortedTraceIds[traceIndex];\n traceIndex += 1;\n const entry = next[pendingAssistantIndex];\n if (entry?.kind === \"message\" && entry.role === \"assistant\" && entry.traceId === undefined) {\n if (traceId !== undefined) {\n next[pendingAssistantIndex] = { ...entry, traceId };\n }\n }\n pendingAssistantIndex = undefined;\n }\n\n for (const [index, entry] of next.entries()) {\n if (entry.kind === \"message\" && entry.role === \"user\") {\n assignPendingTraceId();\n continue;\n }\n if (entry.kind === \"message\" && entry.role === \"assistant\") {\n pendingAssistantIndex = index;\n }\n }\n assignPendingTraceId();\n\n return next;\n}\n\nexport function sessionModelRef(session: StudioSession): string {\n const value = session.metadata?.[studioModelMetadataKey];\n return typeof value === \"string\" ? value : \"\";\n}\n\nexport function modelRefAvailable(models: StudioModelSummary[], ref: string): boolean {\n return ref.length > 0 && models.some((model) => model.ref === ref);\n}\n\nexport function modelSelectLabel(model: StudioModelSummary): string {\n const provider = model.providerName ?? model.providerId;\n const name = model.name ?? model.id;\n const modalities = model.modalities?.input\n .filter((modality) => modality !== \"text\")\n .map((modality) => modality.slice(0, 3))\n .join(\"/\");\n return modalities === undefined || modalities.length === 0\n ? `${provider} / ${name}`\n : `${provider} / ${name} (${modalities})`;\n}\n\nexport async function fileToAttachment(file: File): Promise<PromptAttachment> {\n const mediaType = file.type || mediaTypeFromName(file.name);\n const kind = mediaType.startsWith(\"image/\") ? \"image\" : \"document\";\n if (!isSupportedAttachment(mediaType, file.name)) {\n throw new Error(`Unsupported attachment type: ${file.name}`);\n }\n return {\n id: globalThis.crypto.randomUUID(),\n name: file.name,\n mediaType,\n kind,\n data: await fileToBase64(file),\n size: file.size,\n };\n}\n\nfunction fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject(reader.error ?? new Error(`Failed to read ${file.name}`));\n reader.onload = () => {\n const value = reader.result;\n if (typeof value !== \"string\") {\n reject(new Error(`Failed to read ${file.name}`));\n return;\n }\n resolve(value.slice(value.indexOf(\",\") + 1));\n };\n reader.readAsDataURL(file);\n });\n}\n\nexport function userMessageWithAttachments(text: string, attachments: PromptAttachment[]): Message {\n return { role: \"user\", content: userContentWithAttachments(text, attachments) };\n}\n\nfunction userContentWithAttachments(text: string, attachments: PromptAttachment[]): UserContent[] {\n const content: UserContent[] = [];\n if (text.length > 0) {\n content.push({ type: \"text\", text });\n }\n for (const attachment of attachments) {\n if (attachment.kind === \"image\") {\n content.push({\n type: \"image\",\n source: {\n type: \"base64\",\n data: attachment.data,\n mediaType: attachment.mediaType,\n },\n });\n continue;\n }\n content.push({\n type: \"document\",\n source: {\n type: \"base64\",\n data: attachment.data,\n mediaType: attachment.mediaType,\n filename: attachment.name,\n },\n });\n }\n return content;\n}\n\nexport function userUIMessageWithAttachments(\n text: string,\n attachments: PromptAttachment[],\n): UIMessage {\n return {\n id: createPromptId(\"msg\"),\n role: \"user\",\n parts: userContentWithAttachments(text, attachments).map((content) =>\n content.type === \"text\"\n ? { id: createPromptId(\"part\"), type: \"text\", text: content.text }\n : {\n id: createPromptId(\"part\"),\n type: \"data\",\n name: content.type,\n data: content as JsonValue,\n },\n ),\n };\n}\n\nexport function transcriptAttachmentsForPrompt(\n attachments: PromptAttachment[],\n): NonNullable<Extract<TranscriptEntry, { kind: \"message\" }>[\"attachments\"]> {\n return attachments.map((attachment) => ({\n kind: attachment.kind,\n name: attachment.name,\n mediaType: attachment.mediaType,\n data: attachment.data,\n }));\n}\n\nfunction isSupportedAttachment(mediaType: string, name: string): boolean {\n return (\n mediaType.startsWith(\"image/\") ||\n mediaType === \"application/pdf\" ||\n mediaType.startsWith(\"text/\") ||\n [\"application/json\", \"text/markdown\", \"text/csv\"].includes(mediaType) ||\n /\\.(md|csv|json|txt)$/i.test(name)\n );\n}\n\nfunction mediaTypeFromName(name: string): string {\n if (/\\.png$/i.test(name)) return \"image/png\";\n if (/\\.jpe?g$/i.test(name)) return \"image/jpeg\";\n if (/\\.webp$/i.test(name)) return \"image/webp\";\n if (/\\.gif$/i.test(name)) return \"image/gif\";\n if (/\\.pdf$/i.test(name)) return \"application/pdf\";\n if (/\\.md$/i.test(name)) return \"text/markdown\";\n if (/\\.csv$/i.test(name)) return \"text/csv\";\n if (/\\.json$/i.test(name)) return \"application/json\";\n return \"text/plain\";\n}\n\nlet nextPromptId = 0;\n\nfunction createPromptId(prefix: string): string {\n const random = globalThis.crypto?.randomUUID?.();\n if (random !== undefined) {\n return `${prefix}_${random}`;\n }\n nextPromptId += 1;\n return `${prefix}_${nextPromptId.toString(36)}`;\n}\n","import { useEffect, useState } from \"react\";\n\nexport type StudioTheme = \"light\" | \"dark\";\n\nconst studioThemeStorageKey = \"anvia-studio-theme\";\n\nexport function readInitialStudioTheme(): StudioTheme {\n if (typeof window === \"undefined\") {\n return \"dark\";\n }\n try {\n const stored = window.localStorage.getItem(studioThemeStorageKey);\n return stored === \"light\" || stored === \"dark\" ? stored : \"dark\";\n } catch {\n return \"dark\";\n }\n}\n\nexport function applyStudioTheme(theme: StudioTheme): void {\n if (typeof document === \"undefined\") {\n return;\n }\n document.documentElement.classList.toggle(\"dark\", theme === \"dark\");\n document.documentElement.style.colorScheme = theme;\n}\n\nexport function storeStudioTheme(theme: StudioTheme): void {\n try {\n window.localStorage.setItem(studioThemeStorageKey, theme);\n } catch {\n // Ignore storage failures so private or restricted browsing still toggles the UI.\n }\n}\n\nexport const initialStudioTheme = readInitialStudioTheme();\napplyStudioTheme(initialStudioTheme);\n\nexport function useStudioTheme(): {\n theme: StudioTheme;\n toggleTheme: () => void;\n} {\n const [theme, setTheme] = useState<StudioTheme>(() => initialStudioTheme);\n\n useEffect(() => {\n applyStudioTheme(theme);\n storeStudioTheme(theme);\n }, [theme]);\n\n return {\n theme,\n toggleTheme: () => setTheme((current) => (current === \"dark\" ? \"light\" : \"dark\")),\n };\n}\n","import { useEffect, useState } from \"react\";\nimport type { StudioAgentModelsSummary, StudioModelSummary } from \"../../../../types\";\nimport { modelRefAvailable } from \"../../app-helpers\";\nimport { errorMessage } from \"../shared/format\";\n\nexport function useAgentModels(props: {\n enabled: boolean;\n selectedAgentId: string | undefined;\n onError: (message: string) => void;\n}): {\n selectedAgentModels: StudioModelSummary[];\n selectedModelRef: string;\n setSelectedModelRef: (modelRef: string) => void;\n} {\n const { enabled, onError, selectedAgentId } = props;\n const [agentModels, setAgentModels] = useState<StudioAgentModelsSummary | undefined>();\n const [selectedModelRef, setSelectedModelRef] = useState(\"\");\n\n useEffect(() => {\n if (!enabled || selectedAgentId === undefined) {\n setAgentModels(undefined);\n setSelectedModelRef(\"\");\n return;\n }\n\n const agentId = selectedAgentId;\n let cancelled = false;\n async function loadAgentModels() {\n try {\n const response = await fetch(`/agents/${encodeURIComponent(agentId)}/models`);\n if (!response.ok) {\n throw new Error(`Agent models failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as StudioAgentModelsSummary;\n if (cancelled) {\n return;\n }\n setAgentModels(body);\n setSelectedModelRef((current) =>\n modelRefAvailable(body.models, current)\n ? current\n : (body.defaultModel ?? body.models[0]?.ref ?? \"\"),\n );\n } catch (loadError) {\n if (!cancelled) {\n setAgentModels(undefined);\n setSelectedModelRef(\"\");\n onError(errorMessage(loadError));\n }\n }\n }\n\n void loadAgentModels();\n return () => {\n cancelled = true;\n };\n }, [enabled, onError, selectedAgentId]);\n\n return {\n selectedAgentModels:\n agentModels !== undefined && agentModels.agentId === selectedAgentId\n ? agentModels.models\n : [],\n selectedModelRef,\n setSelectedModelRef,\n };\n}\n","// src/completion/types.ts\nvar UserContent = {\n text(text) {\n return { type: \"text\", text };\n },\n imageUrl(url, options = {}) {\n const image = { type: \"image\", source: { type: \"url\", url } };\n if (options.detail !== void 0) {\n image.detail = options.detail;\n }\n return image;\n },\n imageBase64(data, mediaType, options = {}) {\n const image = {\n type: \"image\",\n source: { type: \"base64\", data, mediaType }\n };\n if (options.detail !== void 0) {\n image.detail = options.detail;\n }\n return image;\n },\n documentUrl(url, mediaType, options = {}) {\n return {\n type: \"document\",\n source: options.filename === void 0 ? { type: \"url\", url, mediaType } : { type: \"url\", url, mediaType, filename: options.filename }\n };\n },\n documentBase64(data, mediaType, options = {}) {\n return {\n type: \"document\",\n source: options.filename === void 0 ? { type: \"base64\", data, mediaType } : { type: \"base64\", data, mediaType, filename: options.filename }\n };\n },\n documentText(text) {\n return { type: \"text\", text };\n }\n};\nvar ToolContent = {\n toolResult(id, content, callId) {\n const normalized = typeof content === \"string\" ? [{ type: \"text\", text: content }] : content;\n return callId === void 0 ? { type: \"tool_result\", id, content: normalized } : { type: \"tool_result\", id, callId, content: normalized };\n }\n};\nfunction serializeToolResultOutput(output) {\n if (typeof output === \"string\") {\n return output;\n }\n try {\n const serialized = JSON.stringify(output);\n return serialized === void 0 ? String(output) : serialized;\n } catch {\n return String(output);\n }\n}\nfunction isToolResultContentArray(value) {\n return Array.isArray(value) && value.length > 0 && value.every((item) => {\n if (typeof item !== \"object\" || item === null || !(\"type\" in item)) {\n return false;\n }\n if (item.type === \"text\") {\n return \"text\" in item && typeof item.text === \"string\";\n }\n if (item.type === \"image\") {\n return \"data\" in item && typeof item.data === \"string\" && (!(\"mediaType\" in item) || item.mediaType === void 0 || typeof item.mediaType === \"string\");\n }\n return false;\n });\n}\nvar AssistantContent = {\n text(text) {\n return { type: \"text\", text };\n },\n imageUrl(url, options = {}) {\n const image = { type: \"image\", source: { type: \"url\", url } };\n if (options.detail !== void 0) {\n image.detail = options.detail;\n }\n return image;\n },\n imageBase64(data, mediaType, options = {}) {\n const image = {\n type: \"image\",\n source: { type: \"base64\", data, mediaType }\n };\n if (options.detail !== void 0) {\n image.detail = options.detail;\n }\n return image;\n },\n reasoning(text, id) {\n return id === void 0 ? { type: \"reasoning\", text } : { type: \"reasoning\", text, id };\n },\n reasoningFromContent(content, id) {\n const text = reasoningDisplayText(content);\n const reasoning = { type: \"reasoning\", text, content };\n return id === void 0 ? reasoning : { ...reasoning, id };\n },\n reasoningSummary(text, id) {\n return AssistantContent.reasoningFromContent([{ type: \"summary\", text }], id);\n },\n reasoningEncrypted(data, id) {\n return AssistantContent.reasoningFromContent([{ type: \"encrypted\", data }], id);\n },\n reasoningRedacted(data, id) {\n return AssistantContent.reasoningFromContent([{ type: \"redacted\", data }], id);\n },\n toolCall(id, name, args, callId) {\n const base = {\n type: \"tool_call\",\n id,\n function: {\n name,\n arguments: args\n }\n };\n return callId === void 0 ? base : { ...base, callId };\n }\n};\nfunction reasoningDisplayText(reasoning) {\n const content = Array.isArray(reasoning) ? reasoning : reasoning.content;\n if (content === void 0) {\n return Array.isArray(reasoning) ? \"\" : reasoning.text;\n }\n return content.flatMap((item) => {\n if (item.type === \"text\" || item.type === \"summary\") {\n return [item.text];\n }\n return [];\n }).join(\"\");\n}\nvar Message = {\n system(content) {\n return { role: \"system\", content };\n },\n user(content) {\n return {\n role: \"user\",\n content: typeof content === \"string\" ? [UserContent.text(content)] : content\n };\n },\n assistant(content, id) {\n const normalized = typeof content === \"string\" ? [AssistantContent.text(content)] : content;\n return id === void 0 ? { role: \"assistant\", content: normalized } : { role: \"assistant\", id, content: normalized };\n },\n tool(content) {\n return {\n role: \"tool\",\n content: Array.isArray(content) ? content : [content]\n };\n },\n toolResult(id, output, options = {}) {\n const content = isToolResultContentArray(output) ? output : serializeToolResultOutput(output);\n return Message.tool(ToolContent.toolResult(id, content, options.callId));\n }\n};\nvar Usage = {\n empty() {\n return {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n cachedInputTokens: 0,\n cacheCreationInputTokens: 0\n };\n },\n add(left, right) {\n return {\n inputTokens: left.inputTokens + right.inputTokens,\n outputTokens: left.outputTokens + right.outputTokens,\n totalTokens: left.totalTokens + right.totalTokens,\n cachedInputTokens: left.cachedInputTokens + right.cachedInputTokens,\n cacheCreationInputTokens: left.cacheCreationInputTokens + right.cacheCreationInputTokens\n };\n }\n};\nvar CompletionCapabilityError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"CompletionCapabilityError\";\n }\n};\nfunction assertCompletionRequestSupported(model, request, options = {}) {\n const modelLabel = `${model.provider}:${request.model ?? model.defaultModel}`;\n const capabilities = model.capabilities;\n if (options.streaming === true && !capabilities.streaming) {\n throw new CompletionCapabilityError(`${modelLabel} does not support streaming completions.`);\n }\n if (request.tools.length > 0 && !capabilities.tools) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool definitions.`);\n }\n if (request.toolChoice !== void 0 && !capabilities.toolChoice) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool choice.`);\n }\n if (request.outputSchema !== void 0 && !capabilities.outputSchema) {\n throw new CompletionCapabilityError(`${modelLabel} does not support output schemas.`);\n }\n if (!capabilities.imageInput && requestHasImageInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support image input.`);\n }\n if (!capabilities.documentInput && requestHasFileDocumentInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support document file input.`);\n }\n}\nfunction textFromAssistantContent(content) {\n return content.flatMap((item) => item.type === \"text\" ? [item.text] : []).join(\"\\n\");\n}\nfunction requestHasImageInput(request) {\n return request.chatHistory.some(\n (message) => message.role === \"system\" ? false : message.content.some((content) => content.type === \"image\")\n );\n}\nfunction requestHasFileDocumentInput(request) {\n return request.chatHistory.some(\n (message) => message.role === \"user\" ? message.content.some(\n (content) => content.type === \"document\" && content.source.type !== \"text\"\n ) : false\n );\n}\n\nexport {\n UserContent,\n ToolContent,\n serializeToolResultOutput,\n isToolResultContentArray,\n AssistantContent,\n reasoningDisplayText,\n Message,\n Usage,\n CompletionCapabilityError,\n assertCompletionRequestSupported,\n textFromAssistantContent\n};\n//# sourceMappingURL=chunk-5LFGEMIW.js.map","import {\n AssistantContent,\n Message,\n ToolContent,\n UserContent,\n reasoningDisplayText,\n serializeToolResultOutput\n} from \"./chunk-5LFGEMIW.js\";\n\n// src/ui/messages.ts\nfunction uiMessagesToCoreMessages(messages) {\n const coreMessages = [];\n for (const message of messages) {\n const text = textFromUIParts(message.parts);\n if (message.role === \"system\") {\n if (text.length > 0) {\n coreMessages.push(Message.system(text));\n }\n continue;\n }\n if (message.role === \"user\") {\n const content = [];\n for (const part of message.parts) {\n if (part.type === \"text\") {\n content.push(UserContent.text(part.text));\n continue;\n }\n if (part.type === \"attachment\") {\n content.push(attachmentToUserContent(part.attachment));\n continue;\n }\n if (part.type === \"data\" && isUserContent(part.data)) {\n content.push(part.data);\n continue;\n }\n throw new TypeError(\n \"User UI messages can only be converted from text, attachment, or image/document data parts.\"\n );\n }\n if (content.length > 0) {\n coreMessages.push(Message.user(content));\n }\n continue;\n }\n if (message.role === \"assistant\") {\n const content = [];\n const toolResults2 = [];\n for (const part of message.parts) {\n if (part.type === \"text\" && part.text.length > 0) {\n content.push(AssistantContent.text(part.text));\n continue;\n }\n if (part.type === \"reasoning\" && part.text.length > 0) {\n content.push(AssistantContent.reasoning(part.text, part.reasoningId));\n continue;\n }\n if (part.type === \"tool\" && (part.state === \"input-streaming\" || part.state === \"input-available\" || part.state === \"output-available\")) {\n content.push(\n AssistantContent.toolCall(\n part.toolCallId,\n part.toolName,\n part.input ?? {},\n part.callId\n )\n );\n if (part.state === \"output-available\") {\n toolResults2.push(\n ToolContent.toolResult(\n part.toolCallId,\n outputToToolResultContent(part.output),\n part.callId\n )\n );\n }\n }\n }\n if (content.length > 0) {\n coreMessages.push(Message.assistant(content, message.id));\n }\n if (toolResults2.length > 0) {\n coreMessages.push(Message.tool(toolResults2));\n }\n continue;\n }\n const toolResults = [];\n for (const part of message.parts) {\n if (part.type !== \"tool\" || part.state !== \"output-available\") {\n continue;\n }\n toolResults.push(\n ToolContent.toolResult(\n part.toolCallId,\n outputToToolResultContent(part.output),\n part.callId\n )\n );\n }\n if (toolResults.length > 0) {\n coreMessages.push(Message.tool(toolResults));\n }\n }\n return coreMessages;\n}\nfunction coreMessagesToUIMessages(messages) {\n const uiMessages = [];\n for (const message of messages) {\n if (message.role === \"system\") {\n uiMessages.push({\n id: createId(\"msg\"),\n role: \"system\",\n parts: [{ id: createId(\"part\"), type: \"text\", text: message.content }]\n });\n continue;\n }\n if (message.role === \"user\") {\n const parts2 = [];\n for (const content of message.content) {\n if (content.type === \"text\") {\n parts2.push({ id: createId(\"part\"), type: \"text\", text: content.text });\n } else {\n parts2.push({\n id: createId(\"part\"),\n type: \"attachment\",\n attachment: userContentToAttachment(content)\n });\n }\n }\n uiMessages.push({ id: createId(\"msg\"), role: \"user\", parts: parts2 });\n continue;\n }\n if (message.role === \"assistant\") {\n const parts2 = [];\n for (const content of message.content) {\n if (content.type === \"text\") {\n parts2.push({ id: createId(\"part\"), type: \"text\", text: content.text });\n continue;\n }\n if (content.type === \"reasoning\") {\n const part = {\n id: createId(\"part\"),\n type: \"reasoning\",\n text: reasoningDisplayText(content)\n };\n if (content.id !== void 0) {\n part.reasoningId = content.id;\n }\n parts2.push(part);\n continue;\n }\n if (content.type === \"tool_call\") {\n const part = {\n id: toolPartId(content.id),\n type: \"tool\",\n toolName: content.function.name,\n toolCallId: content.id,\n state: \"input-available\",\n input: content.function.arguments\n };\n if (content.callId !== void 0) {\n part.callId = content.callId;\n }\n parts2.push(part);\n continue;\n }\n parts2.push({\n id: createId(\"part\"),\n type: \"data\",\n name: content.type,\n data: content\n });\n }\n uiMessages.push({ id: message.id ?? createId(\"msg\"), role: \"assistant\", parts: parts2 });\n continue;\n }\n const parts = [];\n for (const content of message.content) {\n const part = {\n id: toolPartId(content.id),\n type: \"tool\",\n toolName: \"tool\",\n toolCallId: content.id,\n state: \"output-available\",\n output: toolResultContentToJson(content.content)\n };\n if (content.callId !== void 0) {\n part.callId = content.callId;\n }\n parts.push(part);\n }\n uiMessages.push({ id: createId(\"msg\"), role: \"tool\", parts });\n }\n return uiMessages;\n}\nfunction textFromUIParts(parts) {\n return parts.flatMap((part) => part.type === \"text\" ? [part.text] : []).join(\"\");\n}\nfunction outputToToolResultContent(output) {\n return [{ type: \"text\", text: serializeToolResultOutput(output ?? null) }];\n}\nfunction attachmentToUserContent(attachment) {\n if (attachment.type === \"image\" || isImageFileAttachment(attachment)) {\n if (attachment.url !== void 0) {\n return UserContent.imageUrl(attachment.url, imageOptions(attachment));\n }\n if (attachment.data !== void 0 && attachment.mediaType !== void 0) {\n return UserContent.imageBase64(\n attachment.data,\n attachment.mediaType,\n imageOptions(attachment)\n );\n }\n throw new TypeError(\"Image attachments require a url or base64 data with mediaType.\");\n }\n if (attachment.text !== void 0) {\n return {\n type: \"document\",\n source: {\n type: \"text\",\n text: attachment.text,\n ...attachment.mediaType === void 0 ? {} : { mediaType: attachment.mediaType },\n ...attachment.name === void 0 ? {} : { filename: attachment.name }\n }\n };\n }\n const mediaType = attachment.mediaType ?? \"application/octet-stream\";\n if (attachment.url !== void 0) {\n return UserContent.documentUrl(attachment.url, mediaType, documentOptions(attachment));\n }\n if (attachment.data !== void 0) {\n return UserContent.documentBase64(attachment.data, mediaType, documentOptions(attachment));\n }\n throw new TypeError(\"Document attachments require a url, base64 data, or text.\");\n}\nfunction userContentToAttachment(content) {\n if (content.type === \"image\") {\n const attachment2 = {\n id: createId(\"attachment\"),\n type: \"image\",\n ...content.detail === void 0 ? {} : { detail: content.detail }\n };\n if (content.source.type === \"url\") {\n attachment2.url = content.source.url;\n } else {\n attachment2.data = content.source.data;\n attachment2.mediaType = content.source.mediaType;\n }\n return attachment2;\n }\n const attachment = {\n id: createId(\"attachment\"),\n type: \"document\"\n };\n if (content.source.type === \"url\") {\n attachment.url = content.source.url;\n attachment.mediaType = content.source.mediaType;\n if (content.source.filename !== void 0) {\n attachment.name = content.source.filename;\n }\n } else if (content.source.type === \"base64\") {\n attachment.data = content.source.data;\n attachment.mediaType = content.source.mediaType;\n if (content.source.filename !== void 0) {\n attachment.name = content.source.filename;\n }\n } else {\n attachment.text = content.source.text;\n if (content.source.mediaType !== void 0) {\n attachment.mediaType = content.source.mediaType;\n }\n if (content.source.filename !== void 0) {\n attachment.name = content.source.filename;\n }\n }\n return attachment;\n}\nfunction isImageFileAttachment(attachment) {\n return attachment.type === \"file\" && attachment.mediaType?.startsWith(\"image/\") === true;\n}\nfunction imageOptions(attachment) {\n return attachment.detail === void 0 ? {} : { detail: attachment.detail };\n}\nfunction documentOptions(attachment) {\n return attachment.name === void 0 ? {} : { filename: attachment.name };\n}\nfunction toolResultContentToJson(content) {\n if (content.length === 1 && content[0]?.type === \"text\") {\n return content[0].text;\n }\n return content;\n}\nfunction isUserContent(value) {\n if (!isRecord(value)) {\n return false;\n }\n if (value.type === \"text\") {\n return typeof value.text === \"string\";\n }\n if (value.type === \"image\") {\n return isImageContent(value);\n }\n if (value.type === \"document\") {\n return isDocumentContent(value);\n }\n return false;\n}\nfunction isImageContent(value) {\n if (!isRecord(value.source)) {\n return false;\n }\n if (value.source.type === \"url\") {\n return typeof value.source.url === \"string\";\n }\n if (value.source.type === \"base64\") {\n return typeof value.source.data === \"string\" && typeof value.source.mediaType === \"string\";\n }\n return false;\n}\nfunction isDocumentContent(value) {\n if (!isRecord(value.source)) {\n return false;\n }\n if (value.source.type === \"url\") {\n return typeof value.source.url === \"string\" && typeof value.source.mediaType === \"string\";\n }\n if (value.source.type === \"base64\") {\n return typeof value.source.data === \"string\" && typeof value.source.mediaType === \"string\";\n }\n if (value.source.type === \"text\") {\n return typeof value.source.text === \"string\" && (value.source.mediaType === void 0 || typeof value.source.mediaType === \"string\");\n }\n return false;\n}\nfunction toolPartId(toolCallId) {\n return `tool_${toolCallId}`;\n}\nvar nextId = 0;\nfunction createId(prefix) {\n const random = globalThis.crypto?.randomUUID?.();\n if (random !== void 0) {\n return `${prefix}_${random}`;\n }\n nextId += 1;\n return `${prefix}_${nextId.toString(36)}`;\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null;\n}\n\nexport {\n uiMessagesToCoreMessages,\n coreMessagesToUIMessages\n};\n//# sourceMappingURL=chunk-LKLKEECY.js.map","// src/direct.ts\nfunction createDirectTransport(handler) {\n return {\n async *send(request, options) {\n const iterable = handler(request);\n const iterator = iterable[Symbol.asyncIterator]();\n try {\n while (true) {\n if (options?.signal?.aborted) {\n break;\n }\n const next = await iterator.next();\n if (next.done) {\n break;\n }\n yield next.value;\n }\n } finally {\n await iterator.return?.();\n }\n }\n };\n}\n\n// src/streams.ts\nasync function* readJsonlStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n try {\n while (true) {\n const next = await reader.read();\n if (next.done === true) {\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const trimmed2 = line.trim();\n if (trimmed2.length > 0) {\n yield JSON.parse(trimmed2);\n }\n }\n }\n buffer += decoder.decode();\n const trimmed = buffer.trim();\n if (trimmed.length > 0) {\n yield JSON.parse(trimmed);\n }\n } finally {\n reader.releaseLock();\n }\n}\nasync function* readSseStream(stream) {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let event = createEmptySseEvent();\n try {\n while (true) {\n const next = await reader.read();\n if (next.done === true) {\n break;\n }\n buffer += decoder.decode(next.value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n for (const line of lines) {\n const parsed = parseSseLine(line, event);\n event = parsed.event;\n if (parsed.complete === true && parsed.data !== void 0) {\n yield JSON.parse(parsed.data);\n }\n }\n }\n buffer += decoder.decode();\n if (buffer.length > 0) {\n const parsed = parseSseLine(buffer, event);\n event = parsed.event;\n if (parsed.complete === true && parsed.data !== void 0) {\n yield JSON.parse(parsed.data);\n }\n }\n const data = flushSseEvent(event);\n if (data !== void 0) {\n yield JSON.parse(data);\n }\n } finally {\n reader.releaseLock();\n }\n}\nfunction createEmptySseEvent() {\n return { data: [] };\n}\nfunction parseSseLine(line, event) {\n if (line === \"\") {\n const data = flushSseEvent(event);\n return data === void 0 ? { event: createEmptySseEvent(), complete: true } : { event: createEmptySseEvent(), complete: true, data };\n }\n if (line.startsWith(\":\")) {\n return { event };\n }\n const separator = line.indexOf(\":\");\n const field = separator === -1 ? line : line.slice(0, separator);\n const value = separator === -1 ? \"\" : line.slice(separator + 1).replace(/^ /, \"\");\n if (field === \"data\") {\n event.data.push(value);\n }\n return { event };\n}\nfunction flushSseEvent(event) {\n if (event.data.length === 0) {\n return void 0;\n }\n return event.data.join(\"\\n\");\n}\n\n// src/fetch.ts\nvar EventStreamHttpError = class extends Error {\n constructor(response, body) {\n super(`Event stream request failed with status ${response.status}`);\n this.response = response;\n this.body = body;\n this.name = \"EventStreamHttpError\";\n }\n response;\n body;\n};\nasync function* fetchEventStream(input, options = {}) {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (fetchImpl === void 0) {\n throw new Error(\"fetchEventStream requires a fetch implementation\");\n }\n const response = await fetchImpl(input, fetchOptions(options));\n if (!response.ok) {\n throw new EventStreamHttpError(response, await response.text());\n }\n if (response.body === null) {\n throw new Error(\"Event stream response does not include a body\");\n }\n const format = options.format ?? inferEventStreamFormat(response.headers.get(\"content-type\"));\n if (format === \"sse\") {\n yield* readSseStream(response.body);\n return;\n }\n yield* readJsonlStream(response.body);\n}\nfunction fetchOptions(options) {\n const { format: _format, fetch: _fetch, ...init } = options;\n return init;\n}\nfunction inferEventStreamFormat(contentType) {\n return contentType?.toLowerCase().includes(\"text/event-stream\") ? \"sse\" : \"jsonl\";\n}\n\n// src/human-input.ts\nfunction defaultEventToApproval(event) {\n if (!isRecord(event)) {\n return void 0;\n }\n if (event.type !== \"tool_approval_request\" && event.type !== \"tool_approval_result\") {\n return void 0;\n }\n return isToolApproval(event.approval) ? event.approval : void 0;\n}\nfunction defaultEventToQuestion(event) {\n if (!isRecord(event)) {\n return void 0;\n }\n if (event.type !== \"tool_question_request\" && event.type !== \"tool_question_result\") {\n return void 0;\n }\n return isToolQuestion(event.question) ? event.question : void 0;\n}\nasync function defaultDecideApproval(input, options) {\n const endpoint = requireEndpoint(options.endpoint, \"decideApproval\");\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (fetchImpl === void 0) {\n throw new Error(\"humanInput approval decisions require a fetch implementation\");\n }\n const response = await fetchImpl(\n endpointUrl(endpoint, `approvals/${input.approvalId}/decision`),\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n approved: input.approved,\n ...input.reason === void 0 ? {} : { reason: input.reason }\n })\n }\n );\n if (!response.ok) {\n throw new Error(`Tool approval decision failed with status ${response.status}`);\n }\n return responseJson(response);\n}\nasync function defaultAnswerQuestion(input, options) {\n const endpoint = requireEndpoint(options.endpoint, \"answerQuestion\");\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (fetchImpl === void 0) {\n throw new Error(\"humanInput question answers require a fetch implementation\");\n }\n const response = await fetchImpl(endpointUrl(endpoint, `questions/${input.questionId}/answer`), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ answers: input.answers })\n });\n if (!response.ok) {\n throw new Error(`Tool question answer failed with status ${response.status}`);\n }\n return responseJson(response);\n}\nfunction upsertById(items, item) {\n const index = items.findIndex((current) => current.id === item.id);\n if (index === -1) {\n return [...items, item];\n }\n const next = [...items];\n next[index] = item;\n return next;\n}\nfunction requireEndpoint(endpoint, operation) {\n if (endpoint === void 0) {\n throw new Error(`humanInput.${operation} requires endpoint or a custom handler`);\n }\n return endpoint;\n}\nfunction endpointUrl(endpoint, path) {\n const suffix = path.replace(/^\\/+/, \"\");\n if (endpoint instanceof URL) {\n const url = new URL(endpoint.toString());\n url.pathname = joinPath(url.pathname, suffix);\n return url;\n }\n if (/^[a-z][a-z\\d+\\-.]*:\\/\\//i.test(endpoint)) {\n const url = new URL(endpoint);\n url.pathname = joinPath(url.pathname, suffix);\n return url.toString();\n }\n return joinPath(endpoint, suffix);\n}\nfunction joinPath(base, suffix) {\n const trimmedBase = base.replace(/\\/+$/, \"\");\n const trimmedSuffix = suffix.replace(/^\\/+/, \"\");\n if (trimmedBase.length === 0) {\n return `/${trimmedSuffix}`;\n }\n return `${trimmedBase}/${trimmedSuffix}`;\n}\nasync function responseJson(response) {\n const text = await response.text();\n if (text.trim().length === 0) {\n return void 0;\n }\n return JSON.parse(text);\n}\nfunction isToolApproval(value) {\n return isRecord(value) && typeof value.id === \"string\" && typeof value.toolName === \"string\" && typeof value.status === \"string\";\n}\nfunction isToolQuestion(value) {\n return isRecord(value) && typeof value.id === \"string\" && typeof value.toolName === \"string\" && typeof value.status === \"string\" && Array.isArray(value.questions);\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null;\n}\n\n// src/memory.ts\nimport { coreMessagesToUIMessages } from \"@anvia/core/ui\";\nfunction initialMessagesFromMemory(messages) {\n return coreMessagesToUIMessages(messages);\n}\n\n// src/transport.ts\nfunction createFetchTransport(options) {\n return {\n async *send(request, transportOptions = {}) {\n const endpoint = typeof options.endpoint === \"function\" ? options.endpoint(request) : options.endpoint;\n const requestHeaders = await resolveHeaders(options.headers, request);\n const headers = mergeHeaders(requestHeaders, transportOptions.headers);\n const method = options.method ?? \"POST\";\n const body = await resolveBody(options.body, request, headers, method);\n const init = {\n ...options.init ?? {},\n method,\n headers,\n format: options.format ?? \"jsonl\"\n };\n if (body !== void 0) {\n init.body = body;\n }\n if (transportOptions.signal !== void 0) {\n init.signal = transportOptions.signal;\n }\n if (options.fetch !== void 0) {\n init.fetch = options.fetch;\n }\n for await (const event of fetchEventStream(endpoint, init)) {\n yield options.mapEvent === void 0 ? event : options.mapEvent(event);\n }\n }\n };\n}\nfunction createChatTransport(options) {\n return createFetchTransport(options);\n}\nasync function resolveHeaders(headers, request) {\n return typeof headers === \"function\" ? headers(request) : headers;\n}\nasync function resolveBody(body, request, headers, method) {\n if (body !== void 0) {\n return body(request);\n }\n if (!methodAllowsDefaultBody(method)) {\n return void 0;\n }\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n return JSON.stringify(request);\n}\nfunction methodAllowsDefaultBody(method) {\n const normalized = method.toUpperCase();\n return normalized !== \"GET\" && normalized !== \"HEAD\";\n}\nfunction mergeHeaders(...values) {\n const headers = new Headers();\n for (const value of values) {\n if (value === void 0) {\n continue;\n }\n new Headers(value).forEach((headerValue, key) => {\n headers.set(key, headerValue);\n });\n }\n return headers;\n}\n\n// src/use-chat.ts\nimport {\n uiMessagesToCoreMessages\n} from \"@anvia/core/ui\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\n// src/ui-messages.ts\nfunction createUserMessage(input) {\n if (isUIMessage(input)) {\n return input;\n }\n const text = typeof input === \"string\" ? input : input.text ?? \"\";\n const attachments = typeof input === \"string\" ? [] : input.attachments ?? [];\n if (text.trim().length === 0 && attachments.length === 0) {\n return void 0;\n }\n const parts = [];\n if (text.trim().length > 0) {\n parts.push({ id: createId(\"part\"), type: \"text\", text });\n }\n for (const attachment of attachments) {\n const normalized = createAttachment(attachment);\n parts.push({\n id: createId(\"part\"),\n type: \"attachment\",\n attachment: normalized\n });\n }\n return {\n id: typeof input === \"string\" || input.id === void 0 ? createId(\"msg\") : input.id,\n role: \"user\",\n parts,\n ...typeof input === \"string\" || input.metadata === void 0 ? {} : { metadata: input.metadata }\n };\n}\nfunction createAttachment(attachment) {\n return {\n ...attachment,\n id: attachment.id ?? createId(\"attachment\")\n };\n}\nfunction applyUIStreamEvent(messages, event) {\n if (event.type === \"message_start\") {\n const index = messages.findIndex((message) => message.id === event.message.id);\n if (index === -1) {\n return [...messages, event.message];\n }\n const next = [...messages];\n next[index] = event.message;\n return next;\n }\n if (event.type === \"text_delta\") {\n return updateMessagePart(messages, event.messageId, {\n id: event.partId,\n type: \"text\",\n text: event.delta\n });\n }\n if (event.type === \"reasoning_delta\") {\n return updateMessagePart(messages, event.messageId, {\n id: event.partId,\n type: \"reasoning\",\n text: event.delta\n });\n }\n if (event.type === \"tool_update\") {\n return updateMessagePart(messages, event.messageId, event.part);\n }\n if (event.type === \"error\") {\n const messageId = createId(\"msg\");\n return [\n ...messages,\n {\n id: messageId,\n role: \"assistant\",\n parts: [{ id: createId(\"part\"), type: \"error\", error: event.error }]\n }\n ];\n }\n if (event.type === \"message_end\") {\n const { metadata } = event;\n if (metadata === void 0) {\n return messages;\n }\n return messages.map(\n (message) => message.id === event.messageId ? { ...message, metadata } : message\n );\n }\n return messages;\n}\nfunction applyAnviaStreamEvent(messages, event) {\n const uiEvent = asUIStreamEvent(event);\n if (uiEvent !== void 0) {\n return applyUIStreamEvent(messages, uiEvent);\n }\n if (!isRecord2(event) || typeof event.type !== \"string\") {\n return void 0;\n }\n if (event.type === \"text_delta\" && typeof event.delta === \"string\") {\n return appendAssistantDelta(messages, event.delta);\n }\n if (event.type === \"reasoning_delta\" && typeof event.delta === \"string\") {\n return appendAssistantReasoningDelta(\n messages,\n event.delta,\n typeof event.id === \"string\" ? event.id : void 0\n );\n }\n if (event.type === \"tool_call_delta\" && typeof event.id === \"string\") {\n const part = {\n id: toolPartId(event.id),\n type: \"tool\",\n toolName: typeof event.name === \"string\" ? event.name : \"\",\n toolCallId: event.id,\n ...typeof event.callId === \"string\" ? { callId: event.callId } : {},\n state: \"input-streaming\",\n ...typeof event.argumentsDelta === \"string\" ? { input: event.argumentsDelta } : {}\n };\n return updateAssistantToolPart(messages, part);\n }\n if (event.type === \"tool_call\" && isToolCall(event.toolCall)) {\n const part = {\n id: toolPartId(event.toolCall.id),\n type: \"tool\",\n toolName: event.toolCall.function.name,\n toolCallId: event.toolCall.id,\n ...typeof event.toolCall.callId === \"string\" ? { callId: event.toolCall.callId } : {},\n state: \"input-available\",\n input: event.toolCall.function.arguments\n };\n return updateAssistantToolPart(messages, part);\n }\n if (event.type === \"tool_result\") {\n const providerCallId = typeof event.toolCallId === \"string\" ? event.toolCallId : void 0;\n const internalCallId = typeof event.internalCallId === \"string\" ? event.internalCallId : void 0;\n const toolCallId = providerCallId ?? internalCallId;\n if (toolCallId === void 0 || typeof event.toolName !== \"string\") {\n return void 0;\n }\n const part = {\n id: toolPartId(toolCallId),\n type: \"tool\",\n toolName: event.toolName,\n toolCallId,\n ...providerCallId === void 0 ? {} : { callId: providerCallId },\n state: \"output-available\",\n output: \"structuredResult\" in event && event.structuredResult !== void 0 ? valueToJson(event.structuredResult) : valueToJson(event.result)\n };\n return updateAssistantToolPart(messages, part, [providerCallId, internalCallId]);\n }\n if (event.type === \"message_id\" && typeof event.id === \"string\") {\n return setLastAssistantMetadata(messages, { providerMessageId: event.id });\n }\n if (event.type === \"final\") {\n if (isRecord2(event.response) && Array.isArray(event.response.choice)) {\n const finalText = textFromAssistantContent(event.response.choice);\n const next = finalText.length > 0 ? replaceAssistantText(messages, finalText) : messages;\n const providerMessageId = event.response.messageId;\n return typeof providerMessageId === \"string\" ? setLastAssistantMetadata(next, { providerMessageId }) : next;\n }\n if (typeof event.output === \"string\") {\n const next = event.output.length > 0 ? replaceAssistantText(messages, event.output) : messages;\n return typeof event.runId === \"string\" ? setLastAssistantMetadata(next, { runId: event.runId }) : next;\n }\n }\n if (event.type === \"error\" && \"error\" in event) {\n return appendAssistantError(messages, errorFromUnknown(event.error));\n }\n return void 0;\n}\nfunction assistantText(messages) {\n const assistant = [...messages].reverse().find((message) => message.role === \"assistant\");\n if (assistant === void 0) {\n return \"\";\n }\n return messageText(assistant);\n}\nfunction messageText(message) {\n return message.parts.flatMap((part) => part.type === \"text\" ? [part.text] : []).join(\"\");\n}\nfunction appendAssistantDelta(messages, delta) {\n const current = ensureAssistantMessage(messages);\n const assistant = current[current.length - 1];\n if (assistant === void 0) {\n return current;\n }\n return updateMessagePart(current, assistant.id, {\n id: `${assistant.id}_text`,\n type: \"text\",\n text: delta\n });\n}\nfunction appendAssistantReasoningDelta(messages, delta, reasoningId) {\n const current = ensureAssistantMessage(messages);\n const assistant = current[current.length - 1];\n if (assistant === void 0) {\n return current;\n }\n const partId = reasoningId === void 0 ? `${assistant.id}_reasoning` : `${assistant.id}_reasoning_${reasoningId}`;\n return updateMessagePart(current, assistant.id, {\n id: partId,\n type: \"reasoning\",\n text: delta,\n ...reasoningId === void 0 ? {} : { reasoningId }\n });\n}\nfunction replaceAssistantText(messages, text) {\n const current = ensureAssistantMessage(messages);\n const assistant = current[current.length - 1];\n if (assistant === void 0) {\n return current;\n }\n return current.map(\n (message) => message.id === assistant.id ? { ...message, parts: replaceTextPart(message, text) } : message\n );\n}\nfunction updateMessagePart(messages, messageId, part) {\n const existingMessage = messages.find((message) => message.id === messageId);\n const current = existingMessage === void 0 ? [...messages, { id: messageId, role: \"assistant\", parts: [] }] : messages;\n return current.map((message) => {\n if (message.id !== messageId) {\n return message;\n }\n const partIndex = message.parts.findIndex((item) => item.id === part.id);\n if (partIndex === -1) {\n return { ...message, parts: [...message.parts, part] };\n }\n const parts = [...message.parts];\n const currentPart = parts[partIndex];\n if (currentPart?.type === \"text\" && part.type === \"text\" || currentPart?.type === \"reasoning\" && part.type === \"reasoning\") {\n parts[partIndex] = { ...currentPart, text: `${currentPart.text}${part.text}` };\n } else if (currentPart?.type === \"tool\" && part.type === \"tool\") {\n parts[partIndex] = mergeToolPart(currentPart, part);\n } else {\n parts[partIndex] = part;\n }\n return { ...message, parts };\n });\n}\nfunction updateAssistantToolPart(messages, part, aliases = []) {\n const current = ensureAssistantMessage(messages);\n const assistant = current[current.length - 1];\n if (assistant === void 0) {\n return current;\n }\n const existingPart = findMatchingToolPart(assistant, part, aliases);\n const nextPart = existingPart === void 0 ? part : {\n ...part,\n id: existingPart.id,\n toolCallId: existingPart.toolCallId,\n ...existingPart.callId !== void 0 ? { callId: existingPart.callId } : part.callId !== void 0 ? { callId: part.callId } : {}\n };\n return updateMessagePart(current, assistant.id, nextPart);\n}\nfunction findMatchingToolPart(message, part, aliases) {\n const candidates = new Set(\n [part.toolCallId, part.callId, ...aliases].filter(\n (candidate) => candidate !== void 0 && candidate.length > 0\n )\n );\n return message.parts.find(\n (item) => item.type === \"tool\" && (item.id === part.id || candidates.has(item.toolCallId) || item.callId !== void 0 && candidates.has(item.callId))\n );\n}\nfunction mergeToolPart(currentPart, nextPart) {\n const merged = { ...currentPart, ...nextPart };\n if (nextPart.toolName.length === 0) {\n merged.toolName = currentPart.toolName;\n }\n if (nextPart.callId === void 0 && currentPart.callId !== void 0) {\n merged.callId = currentPart.callId;\n }\n if (nextPart.input === void 0 && currentPart.input !== void 0) {\n merged.input = currentPart.input;\n } else if (typeof currentPart.input === \"string\" && typeof nextPart.input === \"string\") {\n merged.input = `${currentPart.input}${nextPart.input}`;\n }\n if (nextPart.output === void 0 && currentPart.output !== void 0) {\n merged.output = currentPart.output;\n }\n if (nextPart.error === void 0 && currentPart.error !== void 0) {\n merged.error = currentPart.error;\n }\n return merged;\n}\nfunction appendAssistantError(messages, error) {\n const messageId = createId(\"msg\");\n return [\n ...messages,\n {\n id: messageId,\n role: \"assistant\",\n parts: [{ id: createId(\"part\"), type: \"error\", error }]\n }\n ];\n}\nfunction setLastAssistantMetadata(messages, metadata) {\n const current = ensureAssistantMessage(messages);\n const assistant = current[current.length - 1];\n if (assistant === void 0) {\n return current;\n }\n return current.map(\n (message) => message.id === assistant.id ? { ...message, metadata: mergeMetadata(message.metadata, metadata) } : message\n );\n}\nfunction replaceTextPart(message, text) {\n const index = message.parts.findIndex((part) => part.type === \"text\");\n if (index === -1) {\n return [...message.parts, { id: `${message.id}_text`, type: \"text\", text }];\n }\n const parts = [...message.parts];\n const current = parts[index];\n if (current?.type === \"text\") {\n parts[index] = { ...current, text };\n }\n return parts;\n}\nfunction ensureAssistantMessage(messages) {\n const last = messages.at(-1);\n if (last?.role === \"assistant\") {\n return messages;\n }\n return [\n ...messages,\n {\n id: createId(\"msg\"),\n role: \"assistant\",\n parts: []\n }\n ];\n}\nvar nextId = 0;\nfunction createId(prefix) {\n const random = globalThis.crypto?.randomUUID?.();\n if (random !== void 0) {\n return `${prefix}_${random}`;\n }\n nextId += 1;\n return `${prefix}_${nextId.toString(36)}`;\n}\nfunction isUIMessage(input) {\n return typeof input !== \"string\" && \"role\" in input && Array.isArray(input.parts);\n}\nfunction asUIStreamEvent(event) {\n if (!isRecord2(event) || typeof event.type !== \"string\") {\n return void 0;\n }\n if (event.type === \"message_start\" && isStreamMessage(event.message)) {\n return event;\n }\n if ((event.type === \"text_delta\" || event.type === \"reasoning_delta\") && typeof event.messageId === \"string\" && typeof event.partId === \"string\" && typeof event.delta === \"string\") {\n return event;\n }\n if (event.type === \"tool_update\" && typeof event.messageId === \"string\" && typeof event.partId === \"string\" && isUIMessagePart(event.part)) {\n return event;\n }\n if (event.type === \"message_end\" && typeof event.messageId === \"string\") {\n return event;\n }\n if (event.type === \"error\" && isUIError(event.error)) {\n return event;\n }\n return void 0;\n}\nfunction isStreamMessage(value) {\n return isRecord2(value) && typeof value.id === \"string\" && typeof value.role === \"string\" && Array.isArray(value.parts);\n}\nfunction isUIMessagePart(value) {\n return isRecord2(value) && typeof value.id === \"string\" && typeof value.type === \"string\";\n}\nfunction isUIError(value) {\n return isRecord2(value) && typeof value.message === \"string\";\n}\nfunction isToolCall(value) {\n return isRecord2(value) && typeof value.id === \"string\" && isRecord2(value.function) && typeof value.function.name === \"string\" && \"arguments\" in value.function;\n}\nfunction textFromAssistantContent(content) {\n return content.flatMap(\n (item) => isRecord2(item) && item.type === \"text\" && typeof item.text === \"string\" ? [item.text] : []\n ).join(\"\\n\");\n}\nfunction errorFromUnknown(error) {\n if (error instanceof Error) {\n return { name: error.name, message: error.message };\n }\n return { message: typeof error === \"string\" ? error : stringifyUnknown(error) };\n}\nfunction stringifyUnknown(value) {\n try {\n const serialized = JSON.stringify(value);\n return serialized === void 0 ? String(value) : serialized;\n } catch {\n return String(value);\n }\n}\nfunction valueToJson(value) {\n if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || Array.isArray(value) || isRecord2(value)) {\n return value;\n }\n return stringifyUnknown(value);\n}\nfunction mergeMetadata(current, next) {\n if (isJsonObject(current) && isJsonObject(next)) {\n return { ...current, ...next };\n }\n return next;\n}\nfunction isJsonObject(value) {\n return isRecord2(value) && !Array.isArray(value);\n}\nfunction toolPartId(toolCallId) {\n return `tool_${toolCallId}`;\n}\nfunction isRecord2(value) {\n return typeof value === \"object\" && value !== null;\n}\n\n// src/use-chat.ts\nfunction useChat(options = {}) {\n const [messages, setMessagesState] = useState(() => [...options.initialMessages ?? []]);\n const [events, setEvents] = useState([]);\n const [status, setStatus] = useState(\"idle\");\n const [error, setError] = useState();\n const [approvals, setApprovals] = useState([]);\n const [questions, setQuestions] = useState([]);\n const [decidingApprovals, setDecidingApprovals] = useState(() => /* @__PURE__ */ new Set());\n const [answeringQuestions, setAnsweringQuestions] = useState(() => /* @__PURE__ */ new Set());\n const abortRef = useRef(void 0);\n const messagesRef = useRef(messages);\n const approvalsRef = useRef(approvals);\n const questionsRef = useRef(questions);\n const decidingApprovalsRef = useRef(decidingApprovals);\n const answeringQuestionsRef = useRef(answeringQuestions);\n const humanInputVersionRef = useRef(0);\n useEffect(() => {\n messagesRef.current = messages;\n }, [messages]);\n useEffect(() => {\n approvalsRef.current = approvals;\n }, [approvals]);\n useEffect(() => {\n questionsRef.current = questions;\n }, [questions]);\n useEffect(() => {\n decidingApprovalsRef.current = decidingApprovals;\n }, [decidingApprovals]);\n useEffect(() => {\n answeringQuestionsRef.current = answeringQuestions;\n }, [answeringQuestions]);\n useEffect(() => {\n return () => {\n abortRef.current?.abort();\n };\n }, []);\n const transport = useMemo(() => {\n if (options.transport !== void 0) {\n return options.transport;\n }\n if (options.endpoint === void 0) {\n return void 0;\n }\n return createChatTransport({\n endpoint: options.endpoint,\n format: options.format ?? \"jsonl\"\n });\n }, [options.transport, options.endpoint, options.format]);\n const setMessages = useCallback((nextMessages) => {\n const next = typeof nextMessages === \"function\" ? nextMessages(messagesRef.current) : nextMessages;\n messagesRef.current = next;\n setMessagesState(next);\n }, []);\n const updateApproval = useCallback((approval) => {\n setApprovals((current) => {\n const next = upsertById(current, approval);\n approvalsRef.current = next;\n return next;\n });\n }, []);\n const updateQuestion = useCallback((question) => {\n setQuestions((current) => {\n const next = upsertById(current, question);\n questionsRef.current = next;\n return next;\n });\n }, []);\n const clearHumanInput = useCallback(() => {\n humanInputVersionRef.current += 1;\n approvalsRef.current = [];\n questionsRef.current = [];\n decidingApprovalsRef.current = /* @__PURE__ */ new Set();\n answeringQuestionsRef.current = /* @__PURE__ */ new Set();\n setApprovals([]);\n setQuestions([]);\n setDecidingApprovals(/* @__PURE__ */ new Set());\n setAnsweringQuestions(/* @__PURE__ */ new Set());\n }, []);\n const applyEvent = useCallback(\n (event) => {\n const mappedUIEvent = options.eventToUIEvent?.(event);\n if (mappedUIEvent !== void 0) {\n setMessages((current) => applyUIStreamEvent(current, mappedUIEvent));\n return;\n }\n const hasCustomEventMapper = options.eventToUIEvent !== void 0 || options.eventToDelta !== void 0 || options.eventToFinal !== void 0;\n if (!hasCustomEventMapper) {\n let handled = false;\n setMessages((current) => {\n const next = applyAnviaStreamEvent(current, event);\n if (next === void 0) {\n return current;\n }\n handled = true;\n return next;\n });\n if (handled) {\n return;\n }\n }\n const delta = options.eventToDelta?.(event);\n if (delta !== void 0 && delta.length > 0) {\n setMessages((current) => appendAssistantDelta(current, delta));\n }\n const final = options.eventToFinal?.(event);\n if (final !== void 0) {\n setMessages((current) => replaceAssistantText(current, final));\n }\n },\n [options, setMessages]\n );\n const applyHumanInputEvent = useCallback(\n (event) => {\n const humanInputOptions = options.humanInput;\n if (humanInputOptions === void 0) {\n return;\n }\n const eventToApproval = humanInputOptions.eventToApproval ?? defaultEventToApproval;\n const approval = eventToApproval(event);\n if (approval !== void 0) {\n updateApproval(approval);\n }\n const eventToQuestion = humanInputOptions.eventToQuestion ?? defaultEventToQuestion;\n const question = eventToQuestion(event);\n if (question !== void 0) {\n updateQuestion(question);\n }\n },\n [options.humanInput, updateApproval, updateQuestion]\n );\n const sendMessages = useCallback(\n async (nextMessages) => {\n if (transport === void 0) {\n throw new Error(\"useChat requires either transport or endpoint\");\n }\n abortRef.current?.abort();\n const abortController = new AbortController();\n abortRef.current = abortController;\n const createRequest = options.createRequest ?? ((args) => ({ messages: args.coreMessages, stream: true }));\n setMessages(nextMessages);\n setEvents([]);\n setError(void 0);\n clearHumanInput();\n setStatus(\"streaming\");\n try {\n const coreMessages = uiMessagesToCoreMessages(nextMessages);\n const request = createRequest({\n messages: nextMessages,\n uiMessages: nextMessages,\n coreMessages\n });\n for await (const event of transport.send(request, { signal: abortController.signal })) {\n if (abortRef.current !== abortController || abortController.signal.aborted) {\n return;\n }\n setEvents((current) => [...current, event]);\n applyHumanInputEvent(event);\n options.onEvent?.(event);\n if (abortRef.current !== abortController || abortController.signal.aborted) {\n return;\n }\n applyEvent(event);\n }\n if (abortRef.current === abortController && !abortController.signal.aborted) {\n setStatus(\"idle\");\n }\n } catch (caught) {\n if (isAbortError(caught)) {\n if (abortRef.current === abortController) {\n setStatus(\"idle\");\n }\n return;\n }\n if (abortRef.current !== abortController) {\n return;\n }\n setError(caught);\n setStatus(\"error\");\n options.onError?.(caught);\n } finally {\n if (abortRef.current === abortController) {\n abortRef.current = void 0;\n }\n }\n },\n [applyEvent, applyHumanInputEvent, clearHumanInput, options, setMessages, transport]\n );\n const sendMessage = useCallback(\n async (input) => {\n const message = createUserMessage(input);\n if (message === void 0) {\n return;\n }\n const currentMessages = messagesRef.current;\n const baseMessages = abortRef.current !== void 0 && currentMessages.at(-1)?.role === \"assistant\" ? currentMessages.slice(0, -1) : currentMessages;\n await sendMessages([...baseMessages, message]);\n },\n [sendMessages]\n );\n const send = useCallback(\n async (input = \"\") => {\n await sendMessage(input);\n },\n [sendMessage]\n );\n const regenerate = useCallback(async () => {\n const lastUserIndex = findLastUserIndex(messagesRef.current);\n if (lastUserIndex === -1) {\n return;\n }\n await sendMessages(messagesRef.current.slice(0, lastUserIndex + 1));\n }, [sendMessages]);\n const stop = useCallback(() => {\n abortRef.current?.abort();\n abortRef.current = void 0;\n setStatus(\"idle\");\n }, []);\n const decideToolApproval = useCallback(\n async (approvalId, approved, reason) => {\n const humanInputOptions = options.humanInput;\n if (humanInputOptions === void 0) {\n throw new Error(\"useChat humanInput is not configured\");\n }\n if (decidingApprovalsRef.current.has(approvalId)) {\n return;\n }\n const humanInputVersion = humanInputVersionRef.current;\n const nextDeciding = new Set(decidingApprovalsRef.current).add(approvalId);\n decidingApprovalsRef.current = nextDeciding;\n setDecidingApprovals(nextDeciding);\n try {\n const approval = approvalsRef.current.find((item) => item.id === approvalId);\n const input = {\n approvalId,\n approved,\n ...reason === void 0 ? {} : { reason },\n ...approval === void 0 ? {} : { approval }\n };\n const result = humanInputOptions.decideApproval === void 0 ? await defaultDecideApproval(input, humanInputOptions) : await humanInputOptions.decideApproval(input);\n if (result !== void 0 && humanInputVersionRef.current === humanInputVersion) {\n updateApproval(result);\n }\n } finally {\n if (humanInputVersionRef.current === humanInputVersion) {\n const next = new Set(decidingApprovalsRef.current);\n next.delete(approvalId);\n decidingApprovalsRef.current = next;\n setDecidingApprovals(next);\n }\n }\n },\n [options.humanInput, updateApproval]\n );\n const approveTool = useCallback(\n async (approvalId, reason) => {\n await decideToolApproval(approvalId, true, reason);\n },\n [decideToolApproval]\n );\n const rejectTool = useCallback(\n async (approvalId, reason) => {\n await decideToolApproval(approvalId, false, reason);\n },\n [decideToolApproval]\n );\n const answerToolQuestion = useCallback(\n async (questionId, answers) => {\n const humanInputOptions = options.humanInput;\n if (humanInputOptions === void 0) {\n throw new Error(\"useChat humanInput is not configured\");\n }\n if (answeringQuestionsRef.current.has(questionId)) {\n return;\n }\n const humanInputVersion = humanInputVersionRef.current;\n const nextAnswering = new Set(answeringQuestionsRef.current).add(questionId);\n answeringQuestionsRef.current = nextAnswering;\n setAnsweringQuestions(nextAnswering);\n try {\n const question = questionsRef.current.find((item) => item.id === questionId);\n const input = {\n questionId,\n answers,\n ...question === void 0 ? {} : { question }\n };\n const result = humanInputOptions.answerQuestion === void 0 ? await defaultAnswerQuestion(input, humanInputOptions) : await humanInputOptions.answerQuestion(input);\n if (result !== void 0 && humanInputVersionRef.current === humanInputVersion) {\n updateQuestion(result);\n }\n } finally {\n if (humanInputVersionRef.current === humanInputVersion) {\n const next = new Set(answeringQuestionsRef.current);\n next.delete(questionId);\n answeringQuestionsRef.current = next;\n setAnsweringQuestions(next);\n }\n }\n },\n [options.humanInput, updateQuestion]\n );\n const reset = useCallback(\n (nextMessages = []) => {\n abortRef.current?.abort();\n abortRef.current = void 0;\n setMessages(nextMessages);\n setEvents([]);\n clearHumanInput();\n setError(void 0);\n setStatus(\"idle\");\n },\n [clearHumanInput, setMessages]\n );\n return {\n messages,\n events,\n suggestions: options.suggestions ?? [],\n setMessages,\n sendMessage,\n send,\n regenerate,\n stop,\n reset,\n status,\n error,\n text: assistantText(messages),\n humanInput: {\n approvals: {\n all: approvals,\n pending: approvals.filter((approval) => approval.status === \"pending\")\n },\n questions: {\n all: questions,\n pending: questions.filter((question) => question.status === \"pending\")\n }\n },\n decidingApprovals: new Set(decidingApprovals),\n answeringQuestions: new Set(answeringQuestions),\n approveTool,\n rejectTool,\n answerToolQuestion\n };\n}\nfunction findLastUserIndex(messages) {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n if (messages[index]?.role === \"user\") {\n return index;\n }\n }\n return -1;\n}\nfunction isAbortError(error) {\n return error instanceof DOMException && error.name === \"AbortError\";\n}\n\n// src/use-completion.ts\nimport {\n uiMessagesToCoreMessages as uiMessagesToCoreMessages2\n} from \"@anvia/core/ui\";\nimport { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from \"react\";\nfunction useCompletion(options = {}) {\n const initialMessages = useMemo2(\n () => options.initialMessages ?? (options.initialCompletion === void 0 ? [] : [\n {\n id: \"initial_assistant\",\n role: \"assistant\",\n parts: [\n {\n id: \"initial_assistant_text\",\n type: \"text\",\n text: options.initialCompletion\n }\n ]\n }\n ]),\n [options.initialCompletion, options.initialMessages]\n );\n const [messages, setMessagesState] = useState2(() => [...initialMessages]);\n const [input, setInput] = useState2(\"\");\n const [events, setEvents] = useState2([]);\n const [status, setStatus] = useState2(\"idle\");\n const [error, setError] = useState2();\n const abortRef = useRef2(void 0);\n const messagesRef = useRef2(messages);\n useEffect2(() => {\n messagesRef.current = messages;\n }, [messages]);\n useEffect2(() => {\n return () => {\n abortRef.current?.abort();\n };\n }, []);\n const transport = useMemo2(() => {\n if (options.transport !== void 0) {\n return options.transport;\n }\n if (options.endpoint === void 0) {\n return void 0;\n }\n return createFetchTransport({\n endpoint: options.endpoint,\n format: options.format ?? \"jsonl\"\n });\n }, [options.transport, options.endpoint, options.format]);\n const setMessages = useCallback2((nextMessages) => {\n messagesRef.current = nextMessages;\n setMessagesState(nextMessages);\n }, []);\n const applyEvent = useCallback2(\n (event) => {\n const mappedUIEvent = options.eventToUIEvent?.(event);\n if (mappedUIEvent !== void 0) {\n setMessagesState((current) => {\n const next = applyUIStreamEvent(current, mappedUIEvent);\n messagesRef.current = next;\n return next;\n });\n return;\n }\n const hasCustomEventMapper = options.eventToUIEvent !== void 0 || options.eventToDelta !== void 0 || options.eventToFinal !== void 0;\n if (!hasCustomEventMapper) {\n let handled = false;\n setMessagesState((current) => {\n const next = applyAnviaStreamEvent(current, event);\n if (next === void 0) {\n return current;\n }\n handled = true;\n messagesRef.current = next;\n return next;\n });\n if (handled) {\n return;\n }\n }\n const delta = options.eventToDelta?.(event);\n if (delta !== void 0 && delta.length > 0) {\n setMessagesState((current) => {\n const next = appendAssistantDelta(current, delta);\n messagesRef.current = next;\n return next;\n });\n }\n const final = options.eventToFinal?.(event);\n if (final !== void 0) {\n setMessagesState((current) => {\n const next = replaceAssistantText(current, final);\n messagesRef.current = next;\n return next;\n });\n }\n },\n [options]\n );\n const complete = useCallback2(\n async (nextInput) => {\n if (transport === void 0) {\n throw new Error(\"useCompletion requires either transport or endpoint\");\n }\n const prompt = nextInput ?? input;\n const userMessage = createUserMessage(prompt);\n if (userMessage === void 0) {\n return;\n }\n const previousAbortController = abortRef.current;\n previousAbortController?.abort();\n const currentMessages = messagesRef.current;\n const baseMessages = previousAbortController !== void 0 && currentMessages.at(-1)?.role === \"assistant\" ? currentMessages.slice(0, -1) : currentMessages;\n const nextMessages = [...baseMessages, userMessage];\n const abortController = new AbortController();\n abortRef.current = abortController;\n const createRequest = options.createRequest ?? ((args) => ({ messages: args.coreMessages, stream: true }));\n setMessages(nextMessages);\n setInput(\"\");\n setEvents([]);\n setError(void 0);\n setStatus(\"streaming\");\n try {\n const coreMessages = uiMessagesToCoreMessages2(nextMessages);\n const request = createRequest({\n messages: nextMessages,\n uiMessages: nextMessages,\n coreMessages\n });\n for await (const event of transport.send(request, { signal: abortController.signal })) {\n setEvents((current) => [...current, event]);\n options.onEvent?.(event);\n applyEvent(event);\n }\n if (!abortController.signal.aborted) {\n setStatus(\"idle\");\n }\n } catch (caught) {\n if (isAbortError2(caught)) {\n if (abortRef.current === abortController) {\n setStatus(\"idle\");\n }\n return;\n }\n setError(caught);\n setStatus(\"error\");\n options.onError?.(caught);\n } finally {\n if (abortRef.current === abortController) {\n abortRef.current = void 0;\n }\n }\n },\n [applyEvent, input, options, setMessages, transport]\n );\n const stop = useCallback2(() => {\n abortRef.current?.abort();\n abortRef.current = void 0;\n setStatus(\"idle\");\n }, []);\n const reset = useCallback2(\n (messagesOrCompletion) => {\n abortRef.current?.abort();\n abortRef.current = void 0;\n if (Array.isArray(messagesOrCompletion)) {\n setMessages(messagesOrCompletion);\n } else if (typeof messagesOrCompletion === \"string\") {\n setMessages([\n {\n id: \"reset_assistant\",\n role: \"assistant\",\n parts: [{ id: \"reset_assistant_text\", type: \"text\", text: messagesOrCompletion }]\n }\n ]);\n } else {\n setMessages([]);\n }\n setEvents([]);\n setError(void 0);\n setInput(\"\");\n setStatus(\"idle\");\n },\n [setMessages]\n );\n return {\n messages,\n completion: assistantText(messages),\n input,\n setInput,\n complete,\n stop,\n reset,\n status,\n error,\n events\n };\n}\nfunction isAbortError2(error) {\n return error instanceof DOMException && error.name === \"AbortError\";\n}\nexport {\n EventStreamHttpError,\n createChatTransport,\n createDirectTransport,\n createFetchTransport,\n defaultAnswerQuestion,\n defaultDecideApproval,\n defaultEventToApproval,\n defaultEventToQuestion,\n fetchEventStream,\n initialMessagesFromMemory,\n readJsonlStream,\n readSseStream,\n useChat,\n useCompletion\n};\n//# sourceMappingURL=index.js.map","import { EventStreamHttpError } from \"@anvia/react\";\nimport { errorMessage } from \"./modules/shared/format\";\n\nexport async function responseErrorMessage(response: Response, label: string): Promise<string> {\n let detail = \"\";\n try {\n const body = (await response.json()) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${response.status}${detail}`;\n}\n\nexport function agentRunErrorMessage(error: unknown): string {\n if (error instanceof EventStreamHttpError) {\n return error.response.status === 401\n ? \"Authentication required\"\n : `Run failed with HTTP ${error.response.status}`;\n }\n return errorMessage(error);\n}\n\nexport function eventStreamResponseErrorMessage(\n error: EventStreamHttpError,\n label: string,\n): string {\n let detail = \"\";\n try {\n const body = JSON.parse(error.body) as unknown;\n if (\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"object\" &&\n body.error !== null &&\n \"message\" in body.error &&\n typeof body.error.message === \"string\"\n ) {\n detail = `: ${body.error.message}`;\n }\n } catch {\n // Ignore non-JSON error bodies.\n }\n return `${label} with HTTP ${error.response.status}${detail}`;\n}\n\nexport function serializedStreamErrorText(error: unknown): string {\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n try {\n return JSON.stringify(error) ?? String(error);\n } catch {\n return String(error);\n }\n}\n","import type { Message } from \"@anvia/core/completion\";\nimport { readJsonlStream } from \"@anvia/react\";\nimport type { ChangeEvent } from \"react\";\nimport { formatToolValue } from \"./format\";\nimport { isRecord } from \"./object\";\nimport type { ChatMessage, TranscriptEntry } from \"./types\";\n\nlet transcriptSequence = 0;\n\nexport function setTranscriptSequence(value: number): void {\n transcriptSequence = value;\n}\n\nexport function resetTranscriptSequence(): void {\n transcriptSequence = 0;\n}\n\nexport function toHistory(messages: TranscriptEntry[]): Message[] {\n return messages\n .filter(\n (message): message is ChatMessage =>\n message.kind === \"message\" && message.text.trim().length > 0,\n )\n .map((message) => ({\n role: message.role,\n content: [{ type: \"text\", text: message.text }],\n }));\n}\n\nexport function formValue(event: ChangeEvent<HTMLTextAreaElement>): string {\n return event.currentTarget.value;\n}\n\nexport function resizeTextarea(textarea: HTMLTextAreaElement | null) {\n if (textarea === null) {\n return;\n }\n textarea.style.height = \"auto\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n}\n\nexport function nextTranscriptId(): number {\n const id = transcriptSequence;\n transcriptSequence += 1;\n return id;\n}\n\nexport function nextSequence(transcript: TranscriptEntry[]): number {\n return transcript.reduce((max, entry) => Math.max(max, entry.entryId + 1), 0);\n}\n\nexport function findMatchingToolIndex(\n messages: TranscriptEntry[],\n toolName: string,\n callId: string | undefined,\n): number {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n const message = messages[index];\n if (message === undefined) {\n continue;\n }\n if (message.kind !== \"tool\" || message.toolName !== toolName || message.result !== undefined) {\n continue;\n }\n if (callId === undefined || message.callId === callId) {\n return index;\n }\n }\n return -1;\n}\n\nexport function findMatchingToolIndexByCall(\n messages: TranscriptEntry[],\n toolName: string,\n callId: string | undefined,\n): number {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n const message = messages[index];\n if (message === undefined) {\n continue;\n }\n if (message.kind !== \"tool\" || message.toolName !== toolName) {\n continue;\n }\n if (callId === undefined || message.callId === callId) {\n return index;\n }\n }\n return -1;\n}\n\nexport function messageText(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n if (!isRecord(value)) {\n return \"\";\n }\n if (typeof value.text === \"string\") {\n return value.text;\n }\n if (typeof value.content === \"string\") {\n return value.content;\n }\n if (Array.isArray(value.content)) {\n return value.content.map(contentText).filter(Boolean).join(\"\\n\");\n }\n return \"\";\n}\n\nfunction contentText(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n if (!isRecord(value)) {\n return \"\";\n }\n if (typeof value.text === \"string\") {\n return value.text;\n }\n if (value.type === \"tool_call\" && isRecord(value.function)) {\n return `${String(value.function.name ?? \"tool\")}(${formatToolValue(value.function.arguments)})`;\n }\n if (value.type === \"tool_result\" && Array.isArray(value.content)) {\n return value.content.map(contentText).filter(Boolean).join(\"\\n\");\n }\n return typeof value.type === \"string\" ? value.type : \"\";\n}\n\nexport async function readJsonl(\n stream: ReadableStream<Uint8Array>,\n onEvent: (event: unknown) => void | Promise<void>,\n): Promise<void> {\n for await (const event of readJsonlStream(stream)) {\n await onEvent(event);\n }\n}\n\nexport function nextPaint(): Promise<void> {\n return new Promise((resolve) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => resolve());\n });\n });\n}\n","import {\n createChatTransport,\n type ToolApproval,\n type ToolQuestion,\n type ToolQuestionAnswer,\n useChat,\n} from \"@anvia/react\";\nimport { type RefObject, useEffect, useRef } from \"react\";\nimport type { AgentRunStreamEvent, StudioConfig, StudioTraceSummary } from \"../../../../types\";\nimport { agentRunErrorMessage, serializedStreamErrorText } from \"../../app-errors\";\nimport {\n enrichTranscriptWithTraceIds,\n type PromptAttachment,\n type StudioAgentRunRequest,\n transcriptAttachmentsForPrompt,\n userUIMessageWithAttachments,\n} from \"../../app-helpers\";\nimport type { useStudioSessions } from \"../sessions/use-studio-sessions\";\nimport { errorMessage, formatToolValue, titleFromText } from \"../shared/format\";\nimport { nextPaint, nextTranscriptId, resizeTextarea, toHistory } from \"../shared/transcript\";\nimport type {\n ActivePage,\n RunState,\n ToolApprovalUpdate,\n ToolQuestionUpdate,\n TranscriptEntry,\n} from \"../shared/types\";\nimport type { useTraces } from \"../tracing/use-traces\";\nimport type { usePlaygroundTranscript } from \"./use-playground-transcript\";\n\ntype PlaygroundTranscriptController = ReturnType<typeof usePlaygroundTranscript>;\ntype StudioSessionsController = ReturnType<typeof useStudioSessions>;\ntype StudioTracesController = ReturnType<typeof useTraces>;\ntype PlaygroundRunRequestContext = Omit<StudioAgentRunRequest, \"message\"> & {\n promptText: string;\n useTextMessage: boolean;\n};\n\nexport function usePlaygroundRun(props: {\n attachments: PromptAttachment[];\n messages: TranscriptEntry[];\n promptRef: RefObject<HTMLTextAreaElement | null>;\n runState: RunState;\n selectedAgent: StudioConfig[\"agents\"][number] | undefined;\n selectedAgentId: string;\n selectedModelRef: string;\n sessions: StudioSessionsController;\n sessionsEnabled: boolean;\n traces: StudioTracesController;\n transcript: PlaygroundTranscriptController;\n onActivePageChange: (page: ActivePage) => void;\n onAttachmentsChange: (attachments: PromptAttachment[]) => void;\n onBeforeRun: () => void;\n onError: (message: string) => void;\n onPromptChange: (prompt: string) => void;\n onRunStateChange: (runState: RunState) => void;\n onSessionTraceSummariesChange: (traceSummaries: StudioTraceSummary[]) => void;\n onStatus: (status: string) => void;\n}) {\n const {\n attachments,\n messages,\n onActivePageChange,\n onAttachmentsChange,\n onBeforeRun,\n onError,\n onPromptChange,\n onRunStateChange,\n onSessionTraceSummariesChange,\n onStatus,\n promptRef,\n runState,\n selectedAgent,\n selectedAgentId,\n selectedModelRef,\n sessions,\n sessionsEnabled,\n traces,\n transcript,\n } = props;\n const playgroundRunRequestRef = useRef<PlaygroundRunRequestContext | undefined>(undefined);\n const playgroundRunErrorRef = useRef<unknown>(undefined);\n const playgroundVisibleEventRef = useRef<Promise<void>>(Promise.resolve());\n\n const playgroundChat = useChat<StudioAgentRunRequest, AgentRunStreamEvent>({\n transport: createChatTransport<StudioAgentRunRequest, AgentRunStreamEvent>({\n endpoint: (request) => `/agents/${encodeURIComponent(request.agentId)}/runs`,\n method: \"POST\",\n format: \"jsonl\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: (request) => {\n const { agentId: _agentId, ...body } = request;\n return JSON.stringify(body);\n },\n mapEvent: (event) => event as AgentRunStreamEvent,\n }),\n createRequest: ({ coreMessages }) => {\n const context = playgroundRunRequestRef.current;\n if (context === undefined) {\n throw new Error(\"Missing playground run request\");\n }\n const message = context.useTextMessage ? context.promptText : coreMessages.at(-1);\n if (message === undefined) {\n throw new Error(\"Missing playground prompt message\");\n }\n return runRequestFromContext(context, message);\n },\n eventToDelta: () => undefined,\n eventToFinal: () => undefined,\n humanInput: {\n eventToApproval: (event) =>\n event.type === \"tool_approval_request\" || event.type === \"tool_approval_result\"\n ? event.approval\n : undefined,\n eventToQuestion: (event) =>\n event.type === \"tool_question_request\" || event.type === \"tool_question_result\"\n ? event.question\n : undefined,\n decideApproval: async (input) => {\n const response = await fetch(\n `/approvals/${encodeURIComponent(input.approvalId)}/decision`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ approved: input.approved }),\n },\n );\n if (!response.ok) {\n throw new Error(`Approval decision failed with HTTP ${response.status}`);\n }\n const approval = (await response.json()) as ToolApproval;\n updateTranscriptApproval(transcript, approval);\n return approval;\n },\n answerQuestion: async (input) => {\n const response = await fetch(`/questions/${encodeURIComponent(input.questionId)}/answer`, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ answers: input.answers }),\n });\n if (!response.ok) {\n throw new Error(`Question answer failed with HTTP ${response.status}`);\n }\n const question = (await response.json()) as ToolQuestion;\n updateTranscriptQuestion(transcript, question);\n return question;\n },\n },\n onEvent(event) {\n const visibleDelta = acceptStreamEvent(event);\n if (visibleDelta) {\n playgroundVisibleEventRef.current = playgroundVisibleEventRef.current.then(nextPaint);\n }\n },\n onError(error) {\n playgroundRunErrorRef.current = error;\n const message = agentRunErrorMessage(error);\n onError(message);\n transcript.appendAssistantError(message);\n },\n });\n\n useEffect(() => {\n onRunStateChange(playgroundChat.status === \"streaming\" ? \"running\" : \"idle\");\n }, [onRunStateChange, playgroundChat.status]);\n\n async function runPrompt(text: string) {\n const trimmed = text.trim();\n const promptAttachments = attachments;\n const agentId = selectedAgent?.id ?? selectedAgentId;\n if (\n (trimmed.length === 0 && promptAttachments.length === 0) ||\n agentId.length === 0 ||\n runState === \"running\" ||\n playgroundChat.status === \"streaming\"\n ) {\n return;\n }\n\n onRunStateChange(\"running\");\n onBeforeRun();\n onActivePageChange(\"playground\");\n onError(\"\");\n onPromptChange(\"\");\n onAttachmentsChange([]);\n requestAnimationFrame(() => resizeTextarea(promptRef.current));\n const promptMessage =\n promptAttachments.length === 0\n ? { text: trimmed }\n : userUIMessageWithAttachments(trimmed, promptAttachments);\n transcript.setMessages((current) => [\n ...current,\n {\n entryId: nextTranscriptId(),\n kind: \"message\",\n role: \"user\",\n text: trimmed,\n ...(promptAttachments.length === 0\n ? {}\n : { attachments: transcriptAttachmentsForPrompt(promptAttachments) }),\n },\n {\n entryId: nextTranscriptId(),\n kind: \"message\",\n role: \"assistant\",\n text: \"\",\n tone: \"pending\",\n },\n ]);\n\n try {\n const shouldCreateSession = sessionsEnabled && sessions.selectedSessionId.length === 0;\n const sessionId = shouldCreateSession\n ? (await sessions.createSession(titleFromText(trimmed), { updatePath: false })).id\n : sessions.selectedSessionId;\n const history = sessionsEnabled ? undefined : toHistory(messages);\n playgroundRunErrorRef.current = undefined;\n playgroundVisibleEventRef.current = Promise.resolve();\n playgroundRunRequestRef.current = {\n agentId,\n promptText: trimmed,\n useTextMessage: promptAttachments.length === 0,\n ...(sessionId.length === 0 ? {} : { sessionId }),\n ...(history === undefined ? {} : { history }),\n ...(selectedModelRef.length === 0 ? {} : { model: selectedModelRef }),\n stream: true,\n metadata: {\n source: \"anvia-studio\",\n ...(selectedModelRef.length === 0 ? {} : { studioModel: selectedModelRef }),\n },\n };\n\n await playgroundChat.sendMessage(promptMessage);\n await playgroundVisibleEventRef.current;\n\n if (playgroundRunErrorRef.current === undefined) {\n await sessions.loadAllSessions();\n if (sessionId.length > 0) {\n sessions.setSelectedSessionId(sessionId);\n const [traceSummaries] = await Promise.all([\n traces.loadSessionTraceSummaries(sessionId),\n sessions.loadSessionLogs(sessionId),\n ]);\n onSessionTraceSummariesChange(traceSummaries);\n transcript.setMessages((current) =>\n enrichTranscriptWithTraceIds(current, traceSummaries),\n );\n if (shouldCreateSession) {\n sessions.openSessionPath(sessionId);\n }\n }\n onStatus(\"Connected\");\n }\n } catch (runError) {\n const message = errorMessage(runError);\n onError(message);\n transcript.appendAssistantError(message);\n } finally {\n playgroundRunRequestRef.current = undefined;\n playgroundChat.reset();\n onRunStateChange(\"idle\");\n }\n }\n\n function decideToolApproval(approvalId: string, approved: boolean) {\n onError(\"\");\n const decision = approved\n ? playgroundChat.approveTool(approvalId)\n : playgroundChat.rejectTool(approvalId);\n void decision.catch((decisionError) => onError(errorMessage(decisionError)));\n }\n\n function answerToolQuestion(questionId: string, answers: ToolQuestionAnswer[]) {\n onError(\"\");\n void playgroundChat\n .answerToolQuestion(questionId, answers)\n .catch((answerError) => onError(errorMessage(answerError)));\n }\n\n function acceptStreamEvent(event: AgentRunStreamEvent): boolean {\n if (event.type === \"text_delta\") {\n transcript.appendAssistantText(event.delta);\n return true;\n }\n if (event.type === \"reasoning_delta\") {\n transcript.appendReasoningText(event.delta, event.id);\n return true;\n }\n if (event.type === \"tool_call\") {\n transcript.appendToolCall(\n event.toolCall.function.name,\n formatToolValue(event.toolCall.function.arguments),\n event.toolCall.callId ?? event.toolCall.id,\n );\n return true;\n }\n if (event.type === \"tool_result\") {\n transcript.appendToolResult({\n toolName: event.toolName,\n callId: event.toolCallId,\n args: event.args,\n result: event.result,\n ...(event.structuredResult === undefined\n ? {}\n : { structuredResult: event.structuredResult }),\n });\n return true;\n }\n if (event.type === \"agent_tool_event\") {\n transcript.appendAgentToolEvent(event);\n return true;\n }\n if (event.type === \"tool_approval_request\") {\n transcript.updateToolApproval(event.approval);\n return true;\n }\n if (event.type === \"tool_approval_result\") {\n transcript.updateToolApproval(event.approval);\n return true;\n }\n if (event.type === \"tool_question_request\") {\n transcript.updateToolQuestion(event.question);\n return true;\n }\n if (event.type === \"tool_question_result\") {\n transcript.updateToolQuestion(event.question);\n return true;\n }\n if (event.type === \"session_log\") {\n sessions.appendSessionLogEntry(event.log);\n return true;\n }\n if (event.type === \"final\") {\n if (event.trace?.traceId !== undefined) {\n transcript.assignAssistantTraceId(event.trace.traceId);\n }\n transcript.clearPendingAssistant();\n return true;\n }\n if (event.type === \"error\") {\n const message = serializedStreamErrorText(event.error);\n playgroundRunErrorRef.current = event.error;\n onError(message);\n transcript.appendAssistantError(message);\n return true;\n }\n return false;\n }\n\n return {\n answeringQuestions: new Set(playgroundChat.answeringQuestions),\n decidingApprovals: new Set(playgroundChat.decidingApprovals),\n answerToolQuestion,\n decideToolApproval,\n runPrompt,\n };\n}\n\nfunction runRequestFromContext(\n context: PlaygroundRunRequestContext,\n message: StudioAgentRunRequest[\"message\"],\n): StudioAgentRunRequest {\n return {\n agentId: context.agentId,\n message,\n ...(context.sessionId === undefined ? {} : { sessionId: context.sessionId }),\n ...(context.history === undefined ? {} : { history: context.history }),\n ...(context.model === undefined ? {} : { model: context.model }),\n stream: context.stream,\n metadata: context.metadata,\n };\n}\n\nfunction updateTranscriptApproval(\n transcript: PlaygroundTranscriptController,\n approval: ToolApproval,\n) {\n const update = transcriptApprovalUpdate(approval);\n if (update !== undefined) {\n transcript.updateToolApproval(update);\n }\n}\n\nfunction updateTranscriptQuestion(\n transcript: PlaygroundTranscriptController,\n question: ToolQuestion,\n) {\n const update = transcriptQuestionUpdate(question);\n if (update !== undefined) {\n transcript.updateToolQuestion(update);\n }\n}\n\nfunction transcriptApprovalUpdate(approval: ToolApproval): ToolApprovalUpdate | undefined {\n if (approval.requestedAt === undefined) {\n return undefined;\n }\n return {\n id: approval.id,\n toolName: approval.toolName,\n ...(approval.callId === undefined ? {} : { callId: approval.callId }),\n status: approval.status,\n requestedAt: approval.requestedAt,\n ...(approval.resolvedAt === undefined ? {} : { resolvedAt: approval.resolvedAt }),\n ...(approval.reason === undefined ? {} : { reason: approval.reason }),\n };\n}\n\nfunction transcriptQuestionUpdate(question: ToolQuestion): ToolQuestionUpdate | undefined {\n if (question.requestedAt === undefined) {\n return undefined;\n }\n return {\n id: question.id,\n toolName: question.toolName,\n ...(question.callId === undefined ? {} : { callId: question.callId }),\n status: question.status,\n requestedAt: question.requestedAt,\n questions: question.questions,\n ...(question.answeredAt === undefined ? {} : { answeredAt: question.answeredAt }),\n ...(question.answers === undefined ? {} : { answers: question.answers }),\n };\n}\n","import type { ToolResultContent } from \"@anvia/core/completion\";\nimport { type Dispatch, type SetStateAction, useState } from \"react\";\nimport type { AgentRunStreamEvent, StudioTranscriptChildAgentEvent } from \"../../../../types\";\nimport { errorMessage, formatToolValue } from \"../shared/format\";\nimport {\n findMatchingToolIndex,\n findMatchingToolIndexByCall,\n nextTranscriptId,\n} from \"../shared/transcript\";\nimport type { ToolApprovalUpdate, ToolQuestionUpdate, TranscriptEntry } from \"../shared/types\";\n\nexport function usePlaygroundTranscript(): {\n messages: TranscriptEntry[];\n setMessages: Dispatch<SetStateAction<TranscriptEntry[]>>;\n appendAgentToolEvent: (event: Extract<AgentRunStreamEvent, { type: \"agent_tool_event\" }>) => void;\n appendAssistantError: (message: string) => void;\n appendAssistantText: (delta: string) => void;\n appendReasoningText: (delta: string, reasoningId: string | undefined) => void;\n appendToolCall: (toolName: string, args: string, callId: string | undefined) => void;\n appendToolResult: (props: {\n toolName: string;\n callId: string | undefined;\n args: string;\n result: string;\n structuredResult?: ToolResultContent[];\n }) => void;\n assignAssistantTraceId: (traceId: string) => void;\n clearPendingAssistant: () => void;\n updateToolApproval: (approval: ToolApprovalUpdate) => void;\n updateToolQuestion: (question: ToolQuestionUpdate) => void;\n} {\n const [messages, setMessages] = useState<TranscriptEntry[]>([]);\n\n return {\n messages,\n setMessages,\n appendAgentToolEvent: (event) => setMessages((current) => appendAgentToolEvent(current, event)),\n appendAssistantError: (message) =>\n setMessages((current) => appendAssistantError(current, message)),\n appendAssistantText: (delta) => setMessages((current) => appendAssistantText(current, delta)),\n appendReasoningText: (delta, reasoningId) =>\n setMessages((current) => appendReasoningText(current, delta, reasoningId)),\n appendToolCall: (toolName, args, callId) =>\n setMessages((current) => appendToolCall(current, toolName, args, callId)),\n appendToolResult: (props) => setMessages((current) => appendToolResult(current, props)),\n assignAssistantTraceId: (traceId) =>\n setMessages((current) => assignAssistantTraceId(current, traceId)),\n clearPendingAssistant: () => setMessages((current) => withoutPendingAssistant(current)),\n updateToolApproval: (approval) =>\n setMessages((current) => updateToolApproval(current, approval)),\n updateToolQuestion: (question) =>\n setMessages((current) => updateToolQuestion(current, question)),\n };\n}\n\nfunction appendAssistantText(entries: TranscriptEntry[], delta: string): TranscriptEntry[] {\n const next = [...entries];\n const last = next.at(-1);\n if (last?.kind === \"message\" && last.role === \"assistant\") {\n if (last.tone === \"pending\") {\n const { tone: _tone, ...readyMessage } = last;\n next[next.length - 1] = { ...readyMessage, text: delta };\n } else {\n next[next.length - 1] = { ...last, text: `${last.text}${delta}` };\n }\n } else {\n next.push({\n entryId: nextTranscriptId(),\n kind: \"message\",\n role: \"assistant\",\n text: delta,\n });\n }\n return next;\n}\n\nfunction appendAssistantError(entries: TranscriptEntry[], message: string): TranscriptEntry[] {\n const next = [...entries];\n const last = next.at(-1);\n const entry = {\n entryId:\n last?.kind === \"message\" && last.role === \"assistant\" && last.tone === \"pending\"\n ? last.entryId\n : nextTranscriptId(),\n kind: \"message\" as const,\n role: \"assistant\" as const,\n text: message,\n tone: \"error\" as const,\n };\n if (last?.kind === \"message\" && last.role === \"assistant\" && last.tone === \"pending\") {\n next[next.length - 1] = entry;\n return next;\n }\n return [...next, entry];\n}\n\nfunction assignAssistantTraceId(entries: TranscriptEntry[], traceId: string): TranscriptEntry[] {\n const next = [...entries];\n for (let index = next.length - 1; index >= 0; index -= 1) {\n const entry = next[index];\n if (entry?.kind === \"message\" && entry.role === \"assistant\") {\n next[index] = { ...entry, traceId };\n break;\n }\n }\n return next;\n}\n\nfunction updateToolApproval(\n entries: TranscriptEntry[],\n approval: ToolApprovalUpdate,\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n const matchedIndex = findMatchingToolIndexByCall(next, approval.toolName, approval.callId);\n if (matchedIndex < 0) {\n next.push({\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName: approval.toolName,\n ...(approval.callId === undefined ? {} : { callId: approval.callId }),\n approval: {\n id: approval.id,\n status: approval.status,\n requestedAt: approval.requestedAt,\n ...(approval.resolvedAt === undefined ? {} : { resolvedAt: approval.resolvedAt }),\n ...(approval.reason === undefined ? {} : { reason: approval.reason }),\n },\n });\n return next;\n }\n\n const existing = next[matchedIndex];\n if (existing !== undefined && existing.kind === \"tool\") {\n next[matchedIndex] = {\n ...existing,\n approval: {\n id: approval.id,\n status: approval.status,\n requestedAt: approval.requestedAt,\n ...(approval.resolvedAt === undefined ? {} : { resolvedAt: approval.resolvedAt }),\n ...(approval.reason === undefined ? {} : { reason: approval.reason }),\n },\n };\n }\n return next;\n}\n\nfunction updateToolQuestion(\n entries: TranscriptEntry[],\n question: ToolQuestionUpdate,\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n const matchedIndex = findMatchingToolIndexByCall(next, question.toolName, question.callId);\n if (matchedIndex < 0) {\n next.push({\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName: question.toolName,\n ...(question.callId === undefined ? {} : { callId: question.callId }),\n question: {\n id: question.id,\n status: question.status,\n requestedAt: question.requestedAt,\n ...(question.answeredAt === undefined ? {} : { answeredAt: question.answeredAt }),\n questions: question.questions,\n ...(question.answers === undefined ? {} : { answers: question.answers }),\n },\n });\n return next;\n }\n\n const existing = next[matchedIndex];\n if (existing !== undefined && existing.kind === \"tool\") {\n next[matchedIndex] = {\n ...existing,\n question: {\n id: question.id,\n status: question.status,\n requestedAt: question.requestedAt,\n ...(question.answeredAt === undefined ? {} : { answeredAt: question.answeredAt }),\n questions: question.questions,\n ...(question.answers === undefined ? {} : { answers: question.answers }),\n },\n };\n }\n return next;\n}\n\nfunction appendReasoningText(\n entries: TranscriptEntry[],\n delta: string,\n reasoningId: string | undefined,\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n const last = next.at(-1);\n if (last?.kind === \"reasoning\" && (last.reasoningId ?? \"\") === (reasoningId ?? \"\")) {\n next[next.length - 1] = { ...last, text: `${last.text}${delta}` };\n } else {\n next.push({\n entryId: nextTranscriptId(),\n kind: \"reasoning\",\n ...(reasoningId === undefined ? {} : { reasoningId }),\n text: delta,\n });\n }\n return next;\n}\n\nfunction appendToolCall(\n entries: TranscriptEntry[],\n toolName: string,\n args: string,\n callId: string | undefined,\n): TranscriptEntry[] {\n return [\n ...withoutPendingAssistant(entries),\n {\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName,\n ...(callId === undefined ? {} : { callId }),\n ...(args.length === 0 ? {} : { args }),\n },\n ];\n}\n\nfunction appendToolResult(\n entries: TranscriptEntry[],\n props: {\n toolName: string;\n callId: string | undefined;\n args: string;\n result: string;\n structuredResult?: ToolResultContent[];\n },\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n const matchedIndex = findMatchingToolIndex(next, props.toolName, props.callId);\n if (matchedIndex >= 0) {\n const existing = next[matchedIndex];\n if (existing !== undefined && existing.kind === \"tool\") {\n next[matchedIndex] = {\n ...existing,\n args: existing.args ?? props.args,\n result: props.result,\n ...(props.structuredResult === undefined\n ? {}\n : { structuredResult: props.structuredResult }),\n };\n return next;\n }\n }\n\n next.push({\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName: props.toolName,\n ...(props.callId === undefined ? {} : { callId: props.callId }),\n args: props.args,\n result: props.result,\n ...(props.structuredResult === undefined ? {} : { structuredResult: props.structuredResult }),\n });\n return next;\n}\n\nfunction appendAgentToolEvent(\n entries: TranscriptEntry[],\n event: Extract<AgentRunStreamEvent, { type: \"agent_tool_event\" }>,\n): TranscriptEntry[] {\n const childEvent = childAgentTranscriptEvent(event);\n if (childEvent === undefined) {\n return entries;\n }\n const next = withoutPendingAssistant(entries);\n const matchedIndex = findMatchingToolIndex(next, event.toolName, event.toolCallId);\n if (matchedIndex < 0) {\n next.push({\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName: event.toolName,\n ...(event.toolCallId === undefined ? {} : { callId: event.toolCallId }),\n childEvents: [childEvent],\n });\n return next;\n }\n\n const existing = next[matchedIndex];\n if (existing === undefined || existing.kind !== \"tool\") {\n return next;\n }\n const childEvents = [...(existing.childEvents ?? [])];\n appendChildAgentTranscriptEvent(childEvents, childEvent);\n next[matchedIndex] = {\n ...existing,\n childEvents,\n };\n return next;\n}\n\nfunction withoutPendingAssistant(entries: TranscriptEntry[]): TranscriptEntry[] {\n for (let index = entries.length - 1; index >= 0; index -= 1) {\n const entry = entries[index];\n if (\n entry?.kind === \"message\" &&\n entry.role === \"assistant\" &&\n entry.tone === \"pending\" &&\n entry.text.trim().length === 0\n ) {\n return entries.filter((_, itemIndex) => itemIndex !== index);\n }\n }\n return [...entries];\n}\n\nfunction childAgentTranscriptEvent(\n event: Extract<AgentRunStreamEvent, { type: \"agent_tool_event\" }>,\n): StudioTranscriptChildAgentEvent | undefined {\n const child = event.event;\n if (child.type === \"text_delta\") {\n return {\n kind: \"message\",\n agentId: event.agentId,\n ...(event.agentName === undefined ? {} : { agentName: event.agentName }),\n text: child.delta,\n };\n }\n if (child.type === \"reasoning_delta\") {\n return {\n kind: \"reasoning\",\n agentId: event.agentId,\n ...(event.agentName === undefined ? {} : { agentName: event.agentName }),\n ...(child.id === undefined ? {} : { reasoningId: child.id }),\n text: child.delta,\n };\n }\n if (child.type === \"tool_call\") {\n return {\n kind: \"tool\",\n agentId: event.agentId,\n ...(event.agentName === undefined ? {} : { agentName: event.agentName }),\n toolName: child.toolCall.function.name,\n ...(child.toolCall.callId === undefined && child.toolCall.id === undefined\n ? {}\n : { callId: child.toolCall.callId ?? child.toolCall.id }),\n args: formatToolValue(child.toolCall.function.arguments),\n };\n }\n if (child.type === \"tool_result\") {\n return {\n kind: \"tool\",\n agentId: event.agentId,\n ...(event.agentName === undefined ? {} : { agentName: event.agentName }),\n toolName: child.toolName,\n ...(child.toolCallId === undefined ? {} : { callId: child.toolCallId }),\n args: child.args,\n result: child.result,\n ...(child.structuredResult === undefined ? {} : { structuredResult: child.structuredResult }),\n };\n }\n if (child.type === \"error\") {\n return {\n kind: \"message\",\n agentId: event.agentId,\n ...(event.agentName === undefined ? {} : { agentName: event.agentName }),\n text: `Error: ${errorMessage(child.error)}`,\n };\n }\n return undefined;\n}\n\nfunction appendChildAgentTranscriptEvent(\n childEvents: StudioTranscriptChildAgentEvent[],\n childEvent: StudioTranscriptChildAgentEvent,\n) {\n if (childEvent.kind === \"message\") {\n const last = childEvents.at(-1);\n if (last?.kind === \"message\" && last.agentId === childEvent.agentId) {\n childEvents[childEvents.length - 1] = { ...last, text: `${last.text}${childEvent.text}` };\n } else {\n childEvents.push(childEvent);\n }\n return;\n }\n if (childEvent.kind === \"reasoning\") {\n const last = childEvents.at(-1);\n if (\n last?.kind === \"reasoning\" &&\n last.agentId === childEvent.agentId &&\n (last.reasoningId ?? \"\") === (childEvent.reasoningId ?? \"\")\n ) {\n childEvents[childEvents.length - 1] = { ...last, text: `${last.text}${childEvent.text}` };\n } else {\n childEvents.push(childEvent);\n }\n return;\n }\n const matchedIndex = findChildAgentToolEventIndex(childEvents, childEvent);\n if (matchedIndex < 0) {\n childEvents.push(childEvent);\n return;\n }\n const matched = childEvents[matchedIndex];\n if (matched?.kind === \"tool\") {\n childEvents[matchedIndex] = {\n ...matched,\n ...(matched.args !== undefined || childEvent.args === undefined\n ? {}\n : { args: childEvent.args }),\n ...(childEvent.result === undefined ? {} : { result: childEvent.result }),\n };\n }\n}\n\nfunction findChildAgentToolEventIndex(\n childEvents: StudioTranscriptChildAgentEvent[],\n event: Extract<StudioTranscriptChildAgentEvent, { kind: \"tool\" }>,\n): number {\n for (let index = childEvents.length - 1; index >= 0; index -= 1) {\n const childEvent = childEvents[index];\n if (\n childEvent?.kind !== \"tool\" ||\n childEvent.agentId !== event.agentId ||\n childEvent.toolName !== event.toolName ||\n childEvent.result !== undefined\n ) {\n continue;\n }\n if (event.callId === undefined || childEvent.callId === event.callId) {\n return index;\n }\n }\n return -1;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n StudioSession,\n StudioSessionLogEntry,\n StudioSessionSummary,\n StudioTraceSummary,\n} from \"../../../../types\";\nimport { responseErrorMessage } from \"../../app-errors\";\nimport { studioModelMetadataKey } from \"../../app-helpers\";\nimport { errorMessage } from \"../shared/format\";\nimport type { ActivePage, RunState, SessionLoadState } from \"../shared/types\";\n\nexport function useStudioSessions(props: {\n activePage: ActivePage;\n currentAgentId: string;\n enabled: boolean;\n loadSessionTraceSummaries: (sessionId: string) => Promise<StudioTraceSummary[]>;\n runState: RunState;\n selectedModelRef: string;\n onError: (message: string) => void;\n onSessionCreated: (sessionId: string) => void;\n onSessionDeleted: (sessionId: string, wasSelected: boolean) => void;\n onSessionLoaded: (\n session: StudioSession,\n traceSummaries: StudioTraceSummary[],\n options: { updatePath?: boolean },\n ) => void;\n onStatus: (status: string) => void;\n}) {\n const {\n currentAgentId,\n enabled,\n loadSessionTraceSummaries,\n runState,\n selectedModelRef,\n onError,\n onSessionCreated,\n onSessionDeleted,\n onSessionLoaded,\n onStatus,\n } = props;\n const [selectedSessionId, setSelectedSessionId] = useState(\"\");\n const [allSessions, setAllSessions] = useState<StudioSessionSummary[]>([]);\n const [sessionLogs, setSessionLogs] = useState<StudioSessionLogEntry[]>([]);\n const [sessionLoadState, setSessionLoadState] = useState<SessionLoadState>(\"idle\");\n const [sessionLogLoadState, setSessionLogLoadState] = useState<SessionLoadState>(\"idle\");\n const sessionLoadRequestRef = useRef(\"\");\n\n const loadAllSessions = useCallback(async () => {\n if (!enabled) {\n setAllSessions([]);\n return;\n }\n\n try {\n const response = await fetch(\"/sessions?limit=100\");\n if (!response.ok) {\n throw new Error(`Sessions failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { sessions: StudioSessionSummary[] };\n setAllSessions(body.sessions);\n } catch (loadError) {\n onError(errorMessage(loadError));\n }\n }, [enabled, onError]);\n\n useEffect(() => {\n void loadAllSessions();\n }, [loadAllSessions]);\n\n const loadSessionLogs = useCallback(\n async (sessionId: string): Promise<StudioSessionLogEntry[]> => {\n if (!enabled) {\n setSessionLogs([]);\n return [];\n }\n\n setSessionLogLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ limit: \"1000\" });\n const response = await fetch(`/sessions/${encodeURIComponent(sessionId)}/logs?${params}`);\n if (!response.ok) {\n throw new Error(`Session logs failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { logs: StudioSessionLogEntry[] };\n setSessionLogs(body.logs);\n return body.logs;\n } catch (loadError) {\n onError(errorMessage(loadError));\n setSessionLogs([]);\n return [];\n } finally {\n setSessionLogLoadState(\"idle\");\n }\n },\n [enabled, onError],\n );\n\n const createSession = useCallback(\n async (\n title: string,\n options: { updatePath?: boolean } = {},\n ): Promise<StudioSessionSummary> => {\n const response = await fetch(\"/sessions\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n agentId: currentAgentId,\n title,\n metadata: {\n source: \"anvia-studio\",\n ...(selectedModelRef.length === 0\n ? {}\n : { [studioModelMetadataKey]: selectedModelRef }),\n },\n }),\n });\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, \"Session create failed\"));\n }\n const session = (await response.json()) as StudioSessionSummary;\n setSelectedSessionId(session.id);\n setAllSessions((current) => [session, ...current.filter((item) => item.id !== session.id)]);\n if (options.updatePath !== false) {\n onSessionCreated(session.id);\n }\n await loadSessionLogs(session.id);\n return session;\n },\n [currentAgentId, loadSessionLogs, onSessionCreated, selectedModelRef],\n );\n\n const loadSession = useCallback(\n async (sessionId: string, options: { updatePath?: boolean } = {}) => {\n if (runState === \"running\") {\n return;\n }\n\n sessionLoadRequestRef.current = sessionId;\n setSessionLoadState(\"loading\");\n onError(\"\");\n try {\n const response = await fetch(`/sessions/${encodeURIComponent(sessionId)}`);\n if (!response.ok) {\n throw new Error(`Session load failed with HTTP ${response.status}`);\n }\n const session = (await response.json()) as StudioSession;\n const [traceSummaries] = await Promise.all([\n loadSessionTraceSummaries(session.id),\n loadSessionLogs(session.id),\n ]);\n if (sessionLoadRequestRef.current !== sessionId) {\n return;\n }\n setSelectedSessionId(session.id);\n onSessionLoaded(session, traceSummaries, options);\n onStatus(\"Connected\");\n } catch (loadError) {\n if (sessionLoadRequestRef.current === sessionId) {\n onError(errorMessage(loadError));\n }\n } finally {\n if (sessionLoadRequestRef.current === sessionId) {\n setSessionLoadState(\"idle\");\n }\n }\n },\n [loadSessionLogs, loadSessionTraceSummaries, onError, onSessionLoaded, onStatus, runState],\n );\n\n const deleteSession = useCallback(\n async (session: StudioSessionSummary) => {\n if (runState === \"running\") {\n return;\n }\n\n onError(\"\");\n try {\n const response = await fetch(`/sessions/${encodeURIComponent(session.id)}`, {\n method: \"DELETE\",\n });\n if (!response.ok) {\n throw new Error(`Session delete failed with HTTP ${response.status}`);\n }\n\n const wasSelected = selectedSessionId === session.id;\n setAllSessions((current) => current.filter((item) => item.id !== session.id));\n if (wasSelected) {\n setSelectedSessionId(\"\");\n setSessionLogs([]);\n }\n onSessionDeleted(session.id, wasSelected);\n onStatus(\"Connected\");\n } catch (deleteError) {\n onError(errorMessage(deleteError));\n }\n },\n [onError, onSessionDeleted, onStatus, runState, selectedSessionId],\n );\n\n const clearSelectedSession = useCallback(() => {\n setSelectedSessionId(\"\");\n setSessionLogs([]);\n }, []);\n\n const appendSessionLogEntry = useCallback((log: StudioSessionLogEntry) => {\n setSessionLogs((current) => {\n if (current.some((item) => item.id === log.id)) {\n return current;\n }\n return [...current, log].sort((left, right) => left.sequence - right.sequence);\n });\n }, []);\n\n return useMemo(\n () => ({\n allSessions,\n selectedSessionId,\n sessionLogs,\n sessionLoadState,\n sessionLogLoadState,\n appendSessionLogEntry,\n clearSelectedSession,\n createSession,\n deleteSession,\n loadAllSessions,\n loadSession,\n loadSessionLogs,\n openSessionPath: onSessionCreated,\n setSelectedSessionId,\n }),\n [\n allSessions,\n appendSessionLogEntry,\n clearSelectedSession,\n createSession,\n deleteSession,\n loadAllSessions,\n loadSession,\n loadSessionLogs,\n onSessionCreated,\n selectedSessionId,\n sessionLoadState,\n sessionLogLoadState,\n sessionLogs,\n ],\n );\n}\n","import type { ActivePage } from \"./types\";\n\nexport type StudioPageAvailability = {\n hasAgents: boolean;\n sessionsEnabled: boolean;\n tracesEnabled: boolean;\n toolsEnabled: boolean;\n mcpsEnabled: boolean;\n pipelinesEnabled: boolean;\n evalsEnabled: boolean;\n memoryEnabled: boolean;\n statusEnabled: boolean;\n knowledgeEnabled: boolean;\n};\n\nexport function isActivePageEnabled(\n _page: ActivePage,\n _availability: StudioPageAvailability,\n): boolean {\n return true;\n}\n\nexport function fallbackActivePage(\n preferred: ActivePage,\n _availability: StudioPageAvailability,\n): ActivePage {\n return preferred;\n}\n","import type { ActivePage, KnowledgeTab, PageLocation } from \"./types\";\n\nconst root = document.getElementById(\"anvia-ui\");\nconst uiPath = root?.dataset.uiPath ?? \"/ui\";\nconst compatUiPath = root?.dataset.uiCompatPath ?? \"/ui\";\nconst assetPath = normalizePathPrefix(uiPath) || normalizePathPrefix(compatUiPath) || \"/ui\";\n\nexport const logoSrc = `${assetPath}/assets/logo.png`;\nexport const defaultKnowledgeTab: KnowledgeTab = \"static-context\";\n\nexport function pageLocationFromLocation(): PageLocation {\n const normalizedUiPath = normalizePathPrefix(uiPath);\n const normalizedCompatUiPath = normalizePathPrefix(compatUiPath);\n const pathname = window.location.pathname.replace(/\\/+$/, \"\");\n\n if (\n normalizedCompatUiPath.length > 0 &&\n (pathname === normalizedCompatUiPath || pathname.startsWith(`${normalizedCompatUiPath}/`))\n ) {\n return pageLocationFromSegments(\n pathname === normalizedCompatUiPath\n ? []\n : pathname\n .slice(normalizedCompatUiPath.length + 1)\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => decodeURIComponent(segment)),\n );\n }\n\n if (normalizedUiPath.length === 0 && pathname.length > 0) {\n return pageLocationFromSegments(\n pathname\n .slice(1)\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => decodeURIComponent(segment)),\n );\n }\n\n if (pathname === normalizedUiPath) {\n return { page: \"playground\" };\n }\n if (!pathname.startsWith(`${normalizedUiPath}/`)) {\n return { page: \"playground\" };\n }\n\n const segments = pathname\n .slice(normalizedUiPath.length + 1)\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => decodeURIComponent(segment));\n return pageLocationFromSegments(segments);\n}\n\nfunction pageLocationFromSegments(segments: string[]): PageLocation {\n const [first, second, third] = segments;\n if (first === \"tracing\") {\n if (second === \"sessions\") {\n return {\n page: \"tracing\",\n ...(third === undefined ? {} : { traceSessionId: third }),\n };\n }\n return {\n page: \"tracing\",\n ...(second === undefined ? {} : { traceId: second }),\n };\n }\n if (first === \"sessions\") {\n return { page: \"sessions\" };\n }\n if (first === \"agents\") {\n return { page: \"agents\" };\n }\n if (first === \"tools\") {\n return { page: \"tools\" };\n }\n if (first === \"mcps\") {\n return { page: \"mcps\" };\n }\n if (first === \"pipelines\") {\n return { page: \"pipelines\" };\n }\n if (first === \"evals\") {\n return { page: \"evals\" };\n }\n if (first === \"memory\") {\n return { page: \"memory\" };\n }\n if (first === \"status\") {\n return { page: \"status\" };\n }\n if (first === \"knowledge\") {\n return { page: \"knowledge\", knowledgeTab: knowledgeTabFromSegment(second) };\n }\n if (first === \"playground\") {\n return {\n page: \"playground\",\n ...(second === undefined ? {} : { sessionId: second }),\n };\n }\n if (first !== undefined && second === undefined) {\n return { page: \"playground\", sessionId: first };\n }\n return { page: \"playground\" };\n}\n\nexport function updatePagePath(page: ActivePage): void {\n if (page === \"knowledge\") {\n updateKnowledgePath(defaultKnowledgeTab);\n return;\n }\n const basePath = canonicalUiPath();\n const nextPath = page === \"playground\" ? `${basePath}/playground` : `${basePath}/${page}`;\n updateLocationPath(nextPath);\n}\n\nexport function updateKnowledgePath(tab: KnowledgeTab): void {\n updateLocationPath(`${canonicalUiPath()}/knowledge/${tab}`);\n}\n\nexport function updateSessionPath(sessionId: string | undefined): void {\n const basePath = canonicalUiPath();\n const nextPath =\n sessionId === undefined\n ? `${basePath}/playground`\n : `${basePath}/playground/${encodeURIComponent(sessionId)}`;\n updateLocationPath(nextPath);\n}\n\nexport function updateTracePath(traceId: string): void {\n updateLocationPath(`${canonicalUiPath()}/tracing/${encodeURIComponent(traceId)}`);\n}\n\nexport function updateTraceSessionPath(sessionId: string): void {\n updateLocationPath(`${canonicalUiPath()}/tracing/sessions/${encodeURIComponent(sessionId)}`);\n}\n\nexport function normalizePathPrefix(path: string): string {\n return path === \"/\" ? \"\" : path.replace(/\\/+$/, \"\");\n}\n\nfunction canonicalUiPath(): string {\n return normalizePathPrefix(compatUiPath) || normalizePathPrefix(uiPath) || \"/ui\";\n}\n\nfunction updateLocationPath(nextPath: string): void {\n const nextUrl = `${nextPath}${window.location.search}${window.location.hash}`;\n if (`${window.location.pathname}${window.location.search}${window.location.hash}` === nextUrl) {\n return;\n }\n window.history.pushState({}, \"\", nextUrl);\n}\n\nfunction knowledgeTabFromSegment(segment: string | undefined): KnowledgeTab {\n switch (segment) {\n case \"dynamic-context\":\n case \"dynamic-tools\":\n case \"retrieval-log\":\n case \"static-context\":\n return segment;\n default:\n return defaultKnowledgeTab;\n }\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { StudioTrace, StudioTraceSummary } from \"../../../../types\";\nimport { errorMessage } from \"../shared/format\";\nimport type { ActivePage, TraceLoadState } from \"../shared/types\";\n\nexport function useTraces(props: {\n activePage: ActivePage;\n enabled: boolean;\n initialTraceId: string;\n initialTraceSessionId: string | undefined;\n onError: (message: string) => void;\n onNavigateTracing: () => void;\n onOpenTrace: (traceId: string) => void;\n onOpenTraceIndex: () => void;\n onOpenTraceSession: (sessionId: string) => void;\n}) {\n const {\n activePage,\n enabled,\n onError,\n onNavigateTracing,\n onOpenTrace,\n onOpenTraceIndex,\n onOpenTraceSession,\n } = props;\n const [traces, setTraces] = useState<StudioTrace[]>([]);\n const [selectedTraceId, setSelectedTraceId] = useState(() => props.initialTraceId);\n const [traceSessionDetailId, setTraceSessionDetailId] = useState<string | undefined>(\n () => props.initialTraceSessionId,\n );\n const [traceLoadState, setTraceLoadState] = useState<TraceLoadState>(\"idle\");\n\n const loadTraces = useCallback(async () => {\n if (!enabled) {\n setTraces([]);\n return;\n }\n\n setTraceLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ include: \"detail\", limit: \"50\" });\n const response = await fetch(`/traces?${params.toString()}`);\n if (!response.ok) {\n throw new Error(`Traces failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { traces: StudioTrace[] };\n const loaded = body.traces;\n if (selectedTraceId.length > 0 && !loaded.some((trace) => trace.id === selectedTraceId)) {\n const traceResponse = await fetch(`/traces/${encodeURIComponent(selectedTraceId)}`);\n if (traceResponse.ok) {\n setTraces([(await traceResponse.json()) as StudioTrace, ...loaded]);\n return;\n }\n }\n setTraces(loaded);\n } catch (loadError) {\n onError(errorMessage(loadError));\n } finally {\n setTraceLoadState(\"idle\");\n }\n }, [enabled, onError, selectedTraceId]);\n\n const showSessionTraces = useCallback(\n async (sessionId: string, options: { updatePath?: boolean } = {}) => {\n if (!enabled) {\n return;\n }\n\n setTraceLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ include: \"detail\", limit: \"50\", sessionId });\n const response = await fetch(`/traces?${params.toString()}`);\n if (!response.ok) {\n throw new Error(`Session traces failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { traces: StudioTrace[] };\n const loaded = body.traces;\n const ordered = [...loaded].sort(\n (left, right) => Date.parse(left.startedAt) - Date.parse(right.startedAt),\n );\n setTraces(ordered);\n const firstTraceId = ordered[0]?.id;\n if (firstTraceId === undefined) {\n setSelectedTraceId(\"\");\n setTraceSessionDetailId(sessionId);\n if (options.updatePath !== false) {\n onOpenTraceSession(sessionId);\n }\n return;\n }\n onNavigateTracing();\n setSelectedTraceId(firstTraceId);\n setTraceSessionDetailId(sessionId);\n if (options.updatePath !== false) {\n onOpenTraceSession(sessionId);\n }\n } catch (loadError) {\n onError(errorMessage(loadError));\n } finally {\n setTraceLoadState(\"idle\");\n }\n },\n [enabled, onError, onNavigateTracing, onOpenTraceSession],\n );\n\n const loadSessionTraceSummaries = useCallback(\n async (sessionId: string): Promise<StudioTraceSummary[]> => {\n if (!enabled) {\n return [];\n }\n\n const params = new URLSearchParams({ limit: \"100\" });\n const response = await fetch(`/sessions/${encodeURIComponent(sessionId)}/traces?${params}`);\n if (!response.ok) {\n return [];\n }\n const body = (await response.json()) as { traces: StudioTraceSummary[] };\n return body.traces;\n },\n [enabled],\n );\n\n useEffect(() => {\n if (activePage !== \"tracing\" || traceSessionDetailId !== undefined) {\n return;\n }\n void loadTraces();\n }, [activePage, loadTraces, traceSessionDetailId]);\n\n const setTraceLocation = useCallback((traceId: string, traceSessionId: string | undefined) => {\n setSelectedTraceId(traceId);\n setTraceSessionDetailId(traceSessionId);\n }, []);\n\n const clearTraceSelection = useCallback(() => {\n setSelectedTraceId(\"\");\n setTraceSessionDetailId(undefined);\n }, []);\n\n const selectTrace = useCallback(\n (traceId: string) => {\n onNavigateTracing();\n setSelectedTraceId(traceId);\n setTraceSessionDetailId(undefined);\n if (traceId.length === 0) {\n onOpenTraceIndex();\n return;\n }\n onOpenTrace(traceId);\n },\n [onNavigateTracing, onOpenTrace, onOpenTraceIndex],\n );\n\n const removeSessionTraces = useCallback((sessionId: string) => {\n setTraces((current) => current.filter((trace) => trace.sessionId !== sessionId));\n }, []);\n\n return useMemo(\n () => ({\n traces,\n selectedTraceId,\n traceSessionDetailId,\n traceLoadState,\n clearTraceSelection,\n loadSessionTraceSummaries,\n loadTraces,\n removeSessionTraces,\n selectTrace,\n setTraceLocation,\n showSessionTraces,\n }),\n [\n clearTraceSelection,\n loadSessionTraceSummaries,\n loadTraces,\n removeSessionTraces,\n selectTrace,\n selectedTraceId,\n setTraceLocation,\n showSessionTraces,\n traceLoadState,\n traceSessionDetailId,\n traces,\n ],\n );\n}\n","import type { ChangeEvent, KeyboardEvent, RefObject } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport type {\n StudioConfig,\n StudioModelSummary,\n StudioSessionSummary,\n StudioTraceSummary,\n} from \"../../types\";\nimport type { PromptAttachment } from \"./app-helpers\";\nimport type { StudioTheme } from \"./app-theme\";\nimport type { useStudioSessions } from \"./modules/sessions/use-studio-sessions\";\nimport type { ActivePage, KnowledgeTab, RunState, TranscriptEntry } from \"./modules/shared/types\";\nimport type { useTraces } from \"./modules/tracing/use-traces\";\n\ntype StudioSessionsController = ReturnType<typeof useStudioSessions>;\ntype StudioTracesController = ReturnType<typeof useTraces>;\n\nexport type StudioConsoleContextValue = {\n activePage: ActivePage;\n agents: StudioConfig[\"agents\"];\n answeringQuestions: Set<string>;\n attachments: PromptAttachment[];\n decidingApprovals: Set<string>;\n deleteCandidate: StudioSessionSummary | undefined;\n evals: StudioConfig[\"evals\"];\n evalsEnabled: boolean;\n hasAgents: boolean;\n hasMessages: boolean;\n knowledgeEnabled: boolean;\n knowledgeTab: KnowledgeTab;\n mcpsEnabled: boolean;\n memoryEnabled: boolean;\n messages: TranscriptEntry[];\n pageEnabled: (page: ActivePage) => boolean;\n pipelines: StudioConfig[\"pipelines\"];\n pipelinesEnabled: boolean;\n prompt: string;\n runState: RunState;\n selectedAgent: StudioConfig[\"agents\"][number] | undefined;\n selectedAgentId: string;\n selectedAgentModels: StudioModelSummary[];\n selectedAgentQuickPrompts: string[];\n selectedModelRef: string;\n sessionTraceSummaries: StudioTraceSummary[];\n sessions: StudioSessionsController;\n sessionsEnabled: boolean;\n status: string;\n statusEnabled: boolean;\n theme: StudioTheme;\n toolsEnabled: boolean;\n traces: StudioTracesController;\n tracesEnabled: boolean;\n attachmentInputRef: RefObject<HTMLInputElement | null>;\n promptRef: RefObject<HTMLTextAreaElement | null>;\n transcriptScrollerRef: RefObject<HTMLElement | null>;\n activateRoute: (page: ActivePage) => void;\n navigateFallback: (preferred: ActivePage) => void;\n navigatePage: (page: ActivePage) => void;\n navigateKnowledgeTab: (tab: KnowledgeTab) => void;\n setDeleteCandidate: (session: StudioSessionSummary | undefined) => void;\n setError: (message: string) => void;\n setKnowledgeTab: (tab: KnowledgeTab) => void;\n setSelectedModelRef: (modelRef: string) => void;\n setStatus: (status: string) => void;\n startNewChat: (options?: { updatePath?: boolean }) => void;\n selectPlaygroundAgent: (agentId: string) => void;\n addPromptAttachments: (event: ChangeEvent<HTMLInputElement>) => void;\n decideToolApproval: (approvalId: string, approved: boolean) => void;\n updatePrompt: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n handlePromptKeyDown: (event: KeyboardEvent<HTMLTextAreaElement>) => void;\n answerToolQuestion: (\n questionId: string,\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) => void;\n removePromptAttachment: (id: string) => void;\n runPrompt: (prompt: string) => void;\n toggleTheme: () => void;\n updateTranscriptStickiness: () => void;\n};\n\nexport const StudioConsoleContext = createContext<StudioConsoleContextValue | undefined>(undefined);\n\nexport function useStudioConsole(): StudioConsoleContextValue {\n const value = useContext(StudioConsoleContext);\n if (value === undefined) {\n throw new Error(\"StudioConsoleContext is missing\");\n }\n return value;\n}\n","import { lazy } from \"react\";\n\nexport const AgentsPage = lazy(() =>\n import(\"./modules/agents/agents-page\").then((module) => ({\n default: module.AgentsPage,\n })),\n);\n\nexport const EvalsPage = lazy(() =>\n import(\"./modules/evals/evals-page\").then((module) => ({\n default: module.EvalsPage,\n })),\n);\n\nexport const KnowledgePage = lazy(() =>\n import(\"./modules/knowledge/knowledge-page\").then((module) => ({\n default: module.KnowledgePage,\n })),\n);\n\nexport const McpsPage = lazy(() =>\n import(\"./modules/mcps/mcps-page\").then((module) => ({\n default: module.McpsPage,\n })),\n);\n\nexport const MemoryPage = lazy(() =>\n import(\"./modules/memory/memory-page\").then((module) => ({\n default: module.MemoryPage,\n })),\n);\n\nexport const PipelinesPage = lazy(() =>\n import(\"./modules/pipelines/pipelines-page\").then((module) => ({\n default: module.PipelinesPage,\n })),\n);\n\nexport const SessionsPage = lazy(() =>\n import(\"./modules/sessions/sessions-page\").then((module) => ({\n default: module.SessionsPage,\n })),\n);\n\nexport const DeleteSessionDialog = lazy(() =>\n import(\"./modules/sessions/sessions-page\").then((module) => ({\n default: module.DeleteSessionDialog,\n })),\n);\n\nexport const StatusPage = lazy(() =>\n import(\"./modules/status/status-page\").then((module) => ({\n default: module.StatusPage,\n })),\n);\n\nexport const ToolsPage = lazy(() =>\n import(\"./modules/tools/tools-page\").then((module) => ({\n default: module.ToolsPage,\n })),\n);\n\nexport const TraceBrowser = lazy(() =>\n import(\"./modules/tracing/trace-browser\").then((module) => ({\n default: module.TraceBrowser,\n })),\n);\n\nexport function PageLoading() {\n return (\n <section className=\"grid h-full min-h-0 place-items-center bg-background/45 text-sm font-medium text-muted-foreground\">\n Loading\n </section>\n );\n}\n","const Activity01Icon = [\n [\"path\", { d: \"M4.31802 19.682C3 18.364 3 16.2426 3 12C3 7.75736 3 5.63604 4.31802 4.31802C5.63604 3 7.75736 3 12 3C16.2426 3 18.364 3 19.682 4.31802C21 5.63604 21 7.75736 21 12C21 16.2426 21 18.364 19.682 19.682C18.364 21 16.2426 21 12 21C7.75736 21 5.63604 21 4.31802 19.682Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M7 14L9.79289 11.2071C10.1834 10.8166 10.8166 10.8166 11.2071 11.2071L12.7929 12.7929C13.1834 13.1834 13.8166 13.1834 14.2071 12.7929L17 10\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }]\n];\n\nexport { Activity01Icon as default };\n//# sourceMappingURL=Activity01Icon.js.map\n","const ArchiveIcon = [\n [\"path\", { d: \"M13 2H11C7.22876 2 5.34315 2 4.17157 3.17157C3 4.34315 3 6.22876 3 10V14C3 17.7712 3 19.6569 4.17157 20.8284C5.34315 22 7.22876 22 11 22H13C16.7712 22 18.6569 22 19.8284 20.8284C21 19.6569 21 17.7712 21 14V10C21 6.22876 21 4.34315 19.8284 3.17157C18.6569 2 16.7712 2 13 2Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M21 12H3\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M15 7H9\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M15 17H9\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"3\" }]\n];\n\nexport { ArchiveIcon as default };\n//# sourceMappingURL=ArchiveIcon.js.map\n","const ArrowDown01Icon = [\n [\"path\", { d: \"M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }]\n];\n\nexport { ArrowDown01Icon as default };\n//# sourceMappingURL=ArrowDown01Icon.js.map\n","const ArrowUp02Icon = [\n [\"path\", { d: \"M12 5.5V19\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M18 11C18 11 13.5811 5.00001 12 5C10.4188 4.99999 6 11 6 11\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }]\n];\n\nexport { ArrowUp02Icon as default };\n//# sourceMappingURL=ArrowUp02Icon.js.map\n","const AttachmentIcon = [\n [\"path\", { d: \"M19.5 12.0001V13.5001C19.5 17.6422 16.1421 21.0001 12 21.0001C7.85786 21.0001 4.5 17.6422 4.5 13.5001V8C4.5 5.23858 6.73858 3 9.5 3C12.2614 3 14.5 5.23858 14.5 8V13.5C14.5 14.8807 13.3807 16 12 16C10.6193 16 9.5 14.8807 9.5 13.5V9.5\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }]\n];\n\nexport { AttachmentIcon as default };\n//# sourceMappingURL=AttachmentIcon.js.map\n","const BookOpenTextIcon = [\n [\"path\", { d: \"M5.33333 3.00001C7.79379 2.99657 10.1685 3.88709 12 5.5V21C10.1685 19.3871 7.79379 18.4966 5.33333 18.5C3.77132 18.5 2.99032 18.5 2.64526 18.2792C2.4381 18.1466 2.35346 18.0619 2.22086 17.8547C2 17.5097 2 16.8941 2 15.6629V6.40322C2 4.97543 2 4.26154 2.54874 3.68286C3.09748 3.10418 3.65923 3.07432 4.78272 3.0146C4.965 3.00491 5.14858 3.00001 5.33333 3.00001Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M18.6667 3.00001C16.2062 2.99657 13.8315 3.88709 12 5.5V21C13.8315 19.3871 16.2062 18.4966 18.6667 18.5C20.2287 18.5 21.0097 18.5 21.3547 18.2792C21.5619 18.1466 21.6465 18.0619 21.7791 17.8547C22 17.5097 22 16.8941 22 15.6629V6.40322C22 4.97543 22 4.26154 21.4513 3.68286C20.9025 3.10418 20.3408 3.07432 19.2173 3.0146C19.035 3.00491 18.8514 3.00001 18.6667 3.00001Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M19 7.32566C18.8893 7.32211 18.7782 7.32032 18.6667 7.32032C18.1048 7.31954 17.5475 7.36537 17 7.45576M19 11.0067C18.8893 11.0032 18.7782 11.0014 18.6667 11.0014C17.401 10.9996 16.158 11.2344 15 11.6824M19 14.501C18.8893 14.4975 18.7782 14.4957 18.6667 14.4957C17.401 14.4939 16.158 14.7287 15 15.1767\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M5 7.32566C5.11067 7.32211 5.22179 7.32032 5.33333 7.32032C5.89518 7.31954 6.45255 7.36537 7 7.45576M5 11.0067C5.11067 11.0032 5.22179 11.0014 5.33333 11.0014C6.599 10.9996 7.84198 11.2344 9 11.6824M5 14.501C5.11067 14.4975 5.22179 14.4957 5.33333 14.4957C6.599 14.4939 7.84198 14.7287 9 15.1767\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"3\" }]\n];\n\nexport { BookOpenTextIcon as default };\n//# sourceMappingURL=BookOpenTextIcon.js.map\n","const Cancel01Icon = [\n [\"path\", { d: \"M18 6L6.00081 17.9992M17.9992 18L6 6.00085\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }]\n];\n\nexport { Cancel01Icon as default };\n//# sourceMappingURL=Cancel01Icon.js.map\n","const ChatIcon = [\n [\"path\", { d: \"M2 10.5C2 9.72921 2.01346 8.97679 2.03909 8.2503C2.12282 5.87683 2.16469 4.69009 3.13007 3.71745C4.09545 2.74481 5.3157 2.6926 7.7562 2.58819C9.09517 2.5309 10.5209 2.5 12 2.5C13.4791 2.5 14.9048 2.5309 16.2438 2.58819C18.6843 2.6926 19.9046 2.74481 20.8699 3.71745C21.8353 4.69009 21.8772 5.87683 21.9609 8.2503C21.9865 8.97679 22 9.72921 22 10.5C22 11.2708 21.9865 12.0232 21.9609 12.7497C21.8772 15.1232 21.8353 16.3099 20.8699 17.2826C19.9046 18.2552 18.6843 18.3074 16.2437 18.4118C15.5098 18.4432 14.7498 18.4667 13.9693 18.4815C13.2282 18.4955 12.8576 18.5026 12.532 18.6266C12.2064 18.7506 11.9325 18.9855 11.3845 19.4553L9.20503 21.3242C9.07273 21.4376 8.90419 21.5 8.72991 21.5C8.32679 21.5 8 21.1732 8 20.7701V18.4219C7.91842 18.4186 7.83715 18.4153 7.75619 18.4118C5.31569 18.3074 4.09545 18.2552 3.13007 17.2825C2.16469 16.3099 2.12282 15.1232 2.03909 12.7497C2.01346 12.0232 2 11.2708 2 10.5Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M12.1257 10.5H12.0007M8.125 10.5H8M16.125 10.5H16M12.2507 10.5C12.2507 10.6381 12.1388 10.75 12.0007 10.75C11.8627 10.75 11.7507 10.6381 11.7507 10.5C11.7507 10.3619 11.8627 10.25 12.0007 10.25C12.1388 10.25 12.2507 10.3619 12.2507 10.5ZM8.25 10.5C8.25 10.6381 8.13807 10.75 8 10.75C7.86193 10.75 7.75 10.6381 7.75 10.5C7.75 10.3619 7.86193 10.25 8 10.25C8.13807 10.25 8.25 10.3619 8.25 10.5ZM16.25 10.5C16.25 10.6381 16.1381 10.75 16 10.75C15.8619 10.75 15.75 10.6381 15.75 10.5C15.75 10.3619 15.8619 10.25 16 10.25C16.1381 10.25 16.25 10.3619 16.25 10.5Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }]\n];\n\nexport { ChatIcon as default };\n//# sourceMappingURL=ChatIcon.js.map\n","const CheckIcon = [\n [\"path\", { d: \"M5 13.2592L7.58583 15.9568C8.2525 16.6523 8.58583 17.0001 9.00004 17.0001C9.41425 17.0001 9.74759 16.6523 10.4143 15.9568L19 7.00006\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }]\n];\n\nexport { CheckIcon as default };\n//# sourceMappingURL=CheckIcon.js.map\n","const DatabaseLightningIcon = [\n [\"path\", { d: \"M10 8.00024C13.866 8.00024 17 6.6571 17 5.00024C17 3.34339 13.866 2.00024 10 2.00024C6.13401 2.00024 3 3.34339 3 5.00024C3 6.6571 6.13401 8.00024 10 8.00024Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M10 14.0002C6.13401 14.0002 3 12.6571 3 11.0002\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M10 20.0002C6.13401 20.0002 3 18.6571 3 17.0002V5.00024\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M18 15.0001V10.6516C18 10.2918 17.7083 10.0001 17.3485 10.0002C17.1308 10.0003 16.9275 10.1091 16.8067 10.2903L13.1289 15.807C13.0449 15.9331 13 16.0812 13 16.2327C13 16.6567 13.3437 17.0003 13.7676 17.0003L16 17.0003L16 21.3488C16 21.7086 16.2917 22.0003 16.6515 22.0002C16.8692 22.0001 17.0725 21.8913 17.1933 21.7101L20.8711 16.1934C20.9551 16.0673 21 15.9192 21 15.7677C21 15.3437 20.6563 15.0001 20.2324 15.0001H18Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"3\" }],\n [\"path\", { d: \"M6 10.4896V10.4996\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"4\" }],\n [\"path\", { d: \"M6 16.4899V16.4999\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"5\" }]\n];\n\nexport { DatabaseLightningIcon as default };\n//# sourceMappingURL=DatabaseLightningIcon.js.map\n","const DatabaseIcon = [\n [\"ellipse\", { cx: \"12\", cy: \"5\", rx: \"8\", ry: \"3\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M7 10.842C7.60158 11.0229 8.27434 11.1718 9 11.282\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M20 12C20 13.6569 16.4183 15 12 15C7.58172 15 4 13.6569 4 12\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M7 17.842C7.60158 18.0229 8.27434 18.1718 9 18.282\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"3\" }],\n [\"path\", { d: \"M20 5V19C20 20.6569 16.4183 22 12 22C7.58172 22 4 20.6569 4 19V5\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"4\" }]\n];\n\nexport { DatabaseIcon as default };\n//# sourceMappingURL=DatabaseIcon.js.map\n","const ExternalLinkIcon = [\n [\"path\", { d: \"M15 3H18C19.4142 3 20.1213 3 20.5607 3.43934C21 3.87868 21 4.58579 21 6V9M20 4L11 13\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M20 13C20 16.7712 20 18.6569 18.8284 19.8284C17.6569 21 15.7712 21 12 21H11C7.22876 21 5.34315 21 4.17157 19.8284C3 18.6569 3 16.7712 3 13V12C3 8.22876 3 6.34315 4.17157 5.17157C5.34315 4 7.22876 4 11 4\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"1\" }]\n];\n\nexport { ExternalLinkIcon as default };\n//# sourceMappingURL=ExternalLinkIcon.js.map\n","const GaugeIcon = [\n [\"circle\", { cx: \"12\", cy: \"14\", r: \"2\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M20.0007 20C21.2561 18.3287 22 16.2512 22 14C22 12.5778 21.7031 11.2249 21.1679 10M3.99927 20C2.74389 18.3287 2 16.2512 2 14C2 8.47715 6.47715 4 12 4C13.4222 4 14.7751 4.2969 16 4.83209\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M13.5 12.5L19 7\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }]\n];\n\nexport { GaugeIcon as default };\n//# sourceMappingURL=GaugeIcon.js.map\n","const ListViewIcon = [\n [\"path\", { d: \"M2 11.4C2 10.2417 2.24173 10 3.4 10H20.6C21.7583 10 22 10.2417 22 11.4V12.6C22 13.7583 21.7583 14 20.6 14H3.4C2.24173 14 2 13.7583 2 12.6V11.4Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M2 3.4C2 2.24173 2.24173 2 3.4 2H20.6C21.7583 2 22 2.24173 22 3.4V4.6C22 5.75827 21.7583 6 20.6 6H3.4C2.24173 6 2 5.75827 2 4.6V3.4Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M2 19.4C2 18.2417 2.24173 18 3.4 18H20.6C21.7583 18 22 18.2417 22 19.4V20.6C22 21.7583 21.7583 22 20.6 22H3.4C2.24173 22 2 21.7583 2 20.6V19.4Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"2\" }]\n];\n\nexport { ListViewIcon as default };\n//# sourceMappingURL=ListViewIcon.js.map\n","const Moon02Icon = [\n [\"path\", { d: \"M21.5 14.0784C20.3003 14.7189 18.9301 15.0821 17.4751 15.0821C12.7491 15.0821 8.91792 11.2509 8.91792 6.52485C8.91792 5.06986 9.28105 3.69968 9.92163 2.5C5.66765 3.49698 2.5 7.31513 2.5 11.8731C2.5 17.1899 6.8101 21.5 12.1269 21.5C16.6849 21.5 20.503 18.3324 21.5 14.0784Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }]\n];\n\nexport { Moon02Icon as default };\n//# sourceMappingURL=Moon02Icon.js.map\n","const Plug01Icon = [\n [\"path\", { d: \"M15.5 2V6M8.5 6V2\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M6.00446 7.61331C5.93719 6.74273 6.63957 6 7.53014 6H16.4699C17.3604 6 18.0628 6.74273 17.9955 7.61331L17.8117 9.99197C17.6796 11.7019 17.1011 13.3498 16.132 14.7773L15.5312 15.6622C14.9638 16.4979 14.0077 17 12.9838 17H11.0162C9.99228 17 9.03617 16.4979 8.46881 15.6622L7.86803 14.7773C6.89885 13.3498 6.32041 11.7019 6.18827 9.99197L6.00446 7.61331Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M12 17V22\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M11 9H13\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"3\" }]\n];\n\nexport { Plug01Icon as default };\n//# sourceMappingURL=Plug01Icon.js.map\n","const Robot01Icon = [\n [\"path\", { d: \"M12 4V2\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M20 22C20 17.5817 16.4183 14 12 14C7.58172 14 4 17.5817 4 22\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M9.375 8.25H9.25M9.5 8.25C9.5 8.38807 9.38807 8.5 9.25 8.5C9.11193 8.5 9 8.38807 9 8.25C9 8.11193 9.11193 8 9.25 8C9.38807 8 9.5 8.11193 9.5 8.25Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M14.875 8.25H14.75M15 8.25C15 8.38807 14.8881 8.5 14.75 8.5C14.6119 8.5 14.5 8.38807 14.5 8.25C14.5 8.11193 14.6119 8 14.75 8C14.8881 8 15 8.11193 15 8.25Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"3\" }],\n [\"path\", { d: \"M15.1538 4H8.84615C7.59095 4 6.96334 4 6.47397 4.22025C5.91693 4.47095 5.47095 4.91693 5.22025 5.47397C5 5.96334 5 6.59095 5 7.84615C5 9.85448 5 10.8586 5.3524 11.6417C5.75353 12.5329 6.46709 13.2465 7.35835 13.6476C8.14135 14 9.14552 14 11.1538 14H12.8462C14.8545 14 15.8586 14 16.6417 13.6476C17.5329 13.2465 18.2465 12.5329 18.6476 11.6417C19 10.8586 19 9.85448 19 7.84615C19 6.59095 19 5.96334 18.7797 5.47397C18.529 4.91693 18.0831 4.47095 17.526 4.22025C17.0367 4 16.4091 4 15.1538 4Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"4\" }]\n];\n\nexport { Robot01Icon as default };\n//# sourceMappingURL=Robot01Icon.js.map\n","const SearchList01Icon = [\n [\"path\", { d: \"M2.5 9H6.5\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M2.5 14H6.5\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M2.5 4H18.5\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M18.5355 17.0355L21.5 20M20 13.5C20 10.7386 17.7614 8.5 15 8.5C12.2386 8.5 10 10.7386 10 13.5C10 16.2614 12.2386 18.5 15 18.5C17.7614 18.5 20 16.2614 20 13.5Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"3\" }]\n];\n\nexport { SearchList01Icon as default };\n//# sourceMappingURL=SearchList01Icon.js.map\n","const Shield01Icon = [\n [\"path\", { d: \"M18.7088 3.49534C16.8165 2.55382 14.5009 2 12 2C9.4991 2 7.1835 2.55382 5.29116 3.49534C4.36318 3.95706 3.89919 4.18792 3.4496 4.91378C3 5.63965 3 6.34248 3 7.74814V11.2371C3 16.9205 7.54236 20.0804 10.173 21.4338C10.9067 21.8113 11.2735 22 12 22C12.7265 22 13.0933 21.8113 13.8269 21.4338C16.4576 20.0804 21 16.9205 21 11.2371L21 7.74814C21 6.34249 21 5.63966 20.5504 4.91378C20.1008 4.18791 19.6368 3.95706 18.7088 3.49534Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }]\n];\n\nexport { Shield01Icon as default };\n//# sourceMappingURL=Shield01Icon.js.map\n","const Sun02Icon = [\n [\"path\", { d: \"M17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12C7 9.23858 9.23858 7 12 7C14.7614 7 17 9.23858 17 12Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M12 2C11.6227 2.33333 11.0945 3.2 12 4M12 20C12.3773 20.3333 12.9055 21.2 12 22M19.5 4.50271C18.9685 4.46982 17.9253 4.72293 18.0042 5.99847M5.49576 17.5C5.52865 18.0315 5.27555 19.0747 4 18.9958M5.00271 4.5C4.96979 5.03202 5.22315 6.0763 6.5 5.99729M18 17.5026C18.5315 17.4715 19.5747 17.7108 19.4958 18.9168M22 12C21.6667 11.6227 20.8 11.0945 20 12M4 11.5C3.66667 11.8773 2.8 12.4055 2 11.5\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"1\" }]\n];\n\nexport { Sun02Icon as default };\n//# sourceMappingURL=Sun02Icon.js.map\n","const ToolsIcon = [\n [\"path\", { d: \"M13 11L18 6\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M19 7L17 5L19.5 3.5L20.5 4.5L19 7Z\", stroke: \"currentColor\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M4.02513 8.97487C3.01416 7.96391 2.75095 6.48836 3.23548 5.23548L4.65748 6.65748H6.65748V4.65748L5.23548 3.23548C6.48836 2.75095 7.96391 3.01416 8.97487 4.02513C9.98621 5.03647 10.2493 6.51274 9.76398 7.76593L16.2341 14.236C17.4873 13.7507 18.9635 14.0138 19.9749 15.0251C20.9858 16.0361 21.2491 17.5116 20.7645 18.7645L19.3425 17.3425L17.3425 17.3425V19.3425L18.7645 20.7645C17.5116 21.2491 16.0361 20.9858 15.0251 19.9749C14.0145 18.9643 13.7511 17.4895 14.2349 16.2369L7.76312 9.76507C6.51053 10.2489 5.03571 9.98546 4.02513 8.97487Z\", stroke: \"currentColor\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M12.203 14.5L6.59897 20.1041C6.07115 20.6319 5.2154 20.6319 4.68758 20.1041L3.89586 19.3124C3.36805 18.7846 3.36805 17.9288 3.89586 17.401L9.49994 11.7969\", stroke: \"currentColor\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"3\" }]\n];\n\nexport { ToolsIcon as default };\n//# sourceMappingURL=ToolsIcon.js.map\n","const WorkflowSquare01Icon = [\n [\"path\", { d: \"M6 5.5C6 4.56538 6 4.09808 6.20096 3.75C6.33261 3.52197 6.52197 3.33261 6.75 3.20096C7.09808 3 7.56538 3 8.5 3H11.5C12.4346 3 12.9019 3 13.25 3.20096C13.478 3.33261 13.6674 3.52197 13.799 3.75C14 4.09808 14 4.56538 14 5.5C14 6.43462 14 6.90192 13.799 7.25C13.6674 7.47803 13.478 7.66739 13.25 7.79904C12.9019 8 12.4346 8 11.5 8H8.5C7.56538 8 7.09808 8 6.75 7.79904C6.52197 7.66739 6.33261 7.47803 6.20096 7.25C6 6.90192 6 6.43462 6 5.5Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M6 15.5C6 14.5654 6 14.0981 6.20096 13.75C6.33261 13.522 6.52197 13.3326 6.75 13.201C7.09808 13 7.56538 13 8.5 13H11.5C12.4346 13 12.9019 13 13.25 13.201C13.478 13.3326 13.6674 13.522 13.799 13.75C14 14.0981 14 14.5654 14 15.5C14 16.4346 14 16.9019 13.799 17.25C13.6674 17.478 13.478 17.6674 13.25 17.799C12.9019 18 12.4346 18 11.5 18H8.5C7.56538 18 7.09808 18 6.75 17.799C6.52197 17.6674 6.33261 17.478 6.20096 17.25C6 16.9019 6 16.4346 6 15.5Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M20.8398 17.1408C21.6133 16.3673 22 15.9806 22 15.5C22 15.0194 21.6133 14.6327 20.8398 13.8592L20.6408 13.6602C19.8673 12.8867 19.4806 12.5 19 12.5C18.5194 12.5 18.1327 12.8867 17.3592 13.6602L17.1602 13.8592C16.3867 14.6327 16 15.0194 16 15.5C16 15.9806 16.3867 16.3673 17.1602 17.1408L17.3592 17.3398C18.1327 18.1133 18.5194 18.5 19 18.5C19.4806 18.5 19.8673 18.1133 20.6408 17.3398L20.8398 17.1408Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M6.006 5.5H2.00781M2.00781 5.5V2M2.00781 5.5V12C2.00781 13.1037 1.85651 14.4679 2.89627 15.1629C3.40049 15.5 4.1024 15.5 5.50623 15.5M14.0024 15.5H16.0015M19.0001 12.5V9.5C19.0001 7.61438 19.0001 6.67157 18.4146 6.08579C17.8291 5.5 16.8867 5.5 15.0019 5.5H14.0024\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"3\" }],\n [\"path\", { d: \"M22.0001 22C21.0682 22 20.6023 22 20.2348 21.8695C19.7447 21.6955 19.3554 21.3618 19.1524 20.9417C19.0001 20.6267 19.0001 20.2273 19.0001 19.4286V19\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"4\" }]\n];\n\nexport { WorkflowSquare01Icon as default };\n//# sourceMappingURL=WorkflowSquare01Icon.js.map\n","const Wrench01Icon = [\n [\"path\", { d: \"M20.3584 13.3567C19.1689 14.546 16.9308 14.4998 13.4992 14.4998C11.2914 14.4998 9.50138 12.7071 9.50024 10.4993C9.50024 7.07001 9.454 4.83065 10.6435 3.64138C11.8329 2.45212 12.3583 2.50027 17.6274 2.50027C18.1366 2.49809 18.3929 3.11389 18.0329 3.47394L15.3199 6.18714C14.6313 6.87582 14.6294 7.99233 15.3181 8.68092C16.0068 9.36952 17.1234 9.36959 17.8122 8.68109L20.5259 5.96855C20.886 5.60859 21.5019 5.86483 21.4997 6.37395C21.4997 11.6422 21.5479 12.1675 20.3584 13.3567Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M13.5 14.5L7.32842 20.6716C6.22386 21.7761 4.433 21.7761 3.32843 20.6716C2.22386 19.567 2.22386 17.7761 3.32843 16.6716L9.5 10.5\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M5.50896 18.5H5.5\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"2\", key: \"2\" }]\n];\n\nexport { Wrench01Icon as default };\n//# sourceMappingURL=Wrench01Icon.js.map\n","// src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n let slottableElement = null;\n let hasSlottable = false;\n const newChildren = [];\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n React.Children.forEach(children, (maybeSlottable) => {\n if (isSlottable(maybeSlottable)) {\n hasSlottable = true;\n const slottable = maybeSlottable;\n let child = \"child\" in slottable.props ? slottable.props.child : slottable.props.children;\n if (isLazyComponent(child) && typeof use === \"function\") {\n child = use(child._payload);\n }\n slottableElement = getSlottableElementFromSlottable(slottable, child);\n newChildren.push(slottableElement?.props?.children);\n } else {\n newChildren.push(maybeSlottable);\n }\n });\n if (slottableElement) {\n slottableElement = React.cloneElement(slottableElement, void 0, newChildren);\n } else if (\n // A `Slottable` was found but it didn't resolve to a single element (e.g.\n // it wrapped multiple elements, text, or a render-prop `child` that\n // wasn't an element). Don't fall back to treating the `Slottable` wrapper\n // itself as the slot target — throw a descriptive error below instead.\n !hasSlottable && React.Children.count(children) === 1 && React.isValidElement(children)\n ) {\n slottableElement = children;\n }\n const slottableElementRef = slottableElement ? getElementRef(slottableElement) : void 0;\n const composedRef = useComposedRefs(forwardedRef, slottableElementRef);\n if (!slottableElement) {\n if (children || children === 0) {\n throw new Error(\n hasSlottable ? createSlottableError(ownerName) : createSlotError(ownerName)\n );\n }\n return children;\n }\n const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});\n if (slottableElement.type !== React.Fragment) {\n mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;\n }\n return React.cloneElement(slottableElement, mergedProps);\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\nvar SLOTTABLE_IDENTIFIER = Symbol.for(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = (props) => \"child\" in props ? props.children(props.child) : props.children;\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nvar getSlottableElementFromSlottable = (slottable, child) => {\n if (\"child\" in slottable.props) {\n const child2 = slottable.props.child;\n if (!React.isValidElement(child2)) return null;\n return React.cloneElement(child2, void 0, slottable.props.children(child2.props.children));\n }\n return React.isValidElement(child) ? child : null;\n};\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nvar createSlotError = (ownerName) => {\n return `${ownerName} failed to slot onto its children. Expected a single React element child or \\`Slottable\\`.`;\n};\nvar createSlottableError = (ownerName) => {\n return `${ownerName} failed to slot onto its \\`Slottable\\`. Expected \\`Slottable\\` to receive a single React element child.`;\n};\nvar use = React[\" use \".trim().toString()];\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-semibold shadow-none transition duration-200 ease-out active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus-visible:ring-2 focus-visible:ring-ring/35 focus-visible:ring-offset-0 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"border border-foreground/45 bg-foreground text-background hover:bg-foreground/90\",\n ghost:\n \"border border-transparent bg-transparent text-muted-foreground hover:bg-accent hover:text-accent-foreground\",\n destructive:\n \"border border-destructive bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n secondary:\n \"border border-border/80 bg-secondary text-secondary-foreground hover:border-muted-foreground/45 hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-3\",\n icon: \"h-8 w-8 p-0\",\n sm: \"h-8 px-2.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport type ButtonProps = React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n };\n\nexport function Button({ className, variant, size, asChild = false, ...props }: ButtonProps) {\n const Comp = asChild ? Slot : \"button\";\n return <Comp className={cn(buttonVariants({ variant, size, className }))} {...props} />;\n}\n\nexport { buttonVariants };\n","import { forwardRef, createElement } from 'react';\n\nconst defaultAttributes = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n};\nconst HugeiconsIcon = forwardRef(({ color = 'currentColor', size = 24, strokeWidth, absoluteStrokeWidth = false, className = '', altIcon, showAlt = false, icon, primaryColor, secondaryColor, disableSecondaryOpacity = false, ...rest }, ref) => {\n const calculatedStrokeWidth = strokeWidth !== undefined\n ? (absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth)\n : undefined;\n const strokeProps = calculatedStrokeWidth !== undefined ? {\n strokeWidth: calculatedStrokeWidth,\n stroke: 'currentColor'\n } : {};\n const elementProps = {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n color: primaryColor || color,\n className,\n ...strokeProps,\n ...rest,\n };\n const currentIcon = (showAlt && altIcon) ? altIcon : icon;\n // Create SVG children with color handling for two-tone icons\n const svgChildren = [...currentIcon]\n .sort(([, a], [, b]) => {\n const hasOpacityA = a.opacity !== undefined;\n const hasOpacityB = b.opacity !== undefined;\n return hasOpacityB ? 1 : hasOpacityA ? -1 : 0;\n })\n .map(([tag, attrs]) => {\n const isSecondaryPath = attrs.opacity !== undefined;\n const pathOpacity = isSecondaryPath && !disableSecondaryOpacity ? attrs.opacity : undefined;\n // Handle both stroke and fill properties based on element type\n const fillProps = secondaryColor ? {\n ...(attrs.stroke !== undefined ? {\n stroke: isSecondaryPath ? secondaryColor : (primaryColor || color)\n } : {\n fill: isSecondaryPath ? secondaryColor : (primaryColor || color)\n })\n } : {};\n return createElement(tag, {\n ...attrs,\n ...strokeProps,\n ...fillProps,\n opacity: pathOpacity,\n key: attrs.key\n });\n });\n return createElement('svg', elementProps, svgChildren);\n});\nHugeiconsIcon.displayName = 'HugeiconsIcon';\n\nexport { HugeiconsIcon, HugeiconsIcon as default };\n//# sourceMappingURL=HugeiconsIcon.js.map\n","import { HugeiconsIcon, type HugeiconsIconProps, type IconSvgElement } from \"@hugeicons/react\";\n\nexport type StudioIconProps = Omit<HugeiconsIconProps, \"icon\"> & {\n icon: IconSvgElement;\n};\n\nexport function StudioIcon({\n color = \"currentColor\",\n strokeWidth = 1.5,\n ...props\n}: StudioIconProps) {\n return <HugeiconsIcon color={color} strokeWidth={strokeWidth} {...props} />;\n}\n","import type {\n StudioAgentKnowledgeConfig,\n StudioKnowledgeItem,\n StudioKnowledgeSourceKind,\n StudioKnowledgeSourceSummary,\n} from \"../../../../types\";\nimport type { KnowledgeTab } from \"../shared/types\";\n\nexport const itemLimit = 50;\n\nexport type KnowledgeSourceRef = {\n key: string;\n agentId: string;\n agentName: string;\n source: StudioKnowledgeSourceSummary;\n};\n\nexport type ItemState = {\n key: string;\n loading: boolean;\n items: StudioKnowledgeItem[];\n nextCursor?: string;\n totalCount?: number;\n inspectable: boolean;\n message?: string;\n error?: string;\n};\n\nexport function flattenSources(agents: StudioAgentKnowledgeConfig[]): KnowledgeSourceRef[] {\n return agents.flatMap((agent) =>\n agent.sources.map((source, index) => ({\n key: `${agent.agentId}:${sourceId(source, index)}`,\n agentId: agent.agentId,\n agentName: agent.agentName ?? agent.agentId,\n source: withSourceId(source, index),\n })),\n );\n}\n\nexport const knowledgeTabs: Array<{ id: KnowledgeTab; label: string }> = [\n { id: \"static-context\", label: \"Static Context\" },\n { id: \"dynamic-context\", label: \"Dynamic Context\" },\n { id: \"dynamic-tools\", label: \"Dynamic Tools\" },\n { id: \"retrieval-log\", label: \"Retrieval Log\" },\n];\n\nfunction withSourceId(\n source: StudioKnowledgeSourceSummary,\n index: number,\n): StudioKnowledgeSourceSummary {\n return source.sourceId === undefined\n ? { ...source, sourceId: fallbackSourceId(source, index) }\n : source;\n}\n\nexport function sourceId(source: StudioKnowledgeSourceSummary, index = 0): string {\n return source.sourceId ?? fallbackSourceId(source, index);\n}\n\nfunction fallbackSourceId(source: StudioKnowledgeSourceSummary, index: number): string {\n switch (source.kind) {\n case \"static_context\":\n return \"static-context\";\n case \"dynamic_context\":\n return `dynamic-context-${source.registrationIndex ?? index}`;\n case \"dynamic_tools\":\n return `dynamic-tools-${source.registrationIndex ?? index}`;\n }\n}\n\nfunction sumKind(sources: StudioKnowledgeSourceSummary[], kind: StudioKnowledgeSourceKind): number {\n return sources\n .filter((source) => source.kind === kind)\n .reduce((total, source) => total + (source.itemCount ?? source.count), 0);\n}\n\nexport function sourceLabel(kind: StudioKnowledgeSourceKind): string {\n switch (kind) {\n case \"static_context\":\n return \"Static context\";\n case \"dynamic_context\":\n return \"Dynamic context\";\n case \"dynamic_tools\":\n return \"Dynamic tools\";\n }\n}\n\nexport function sourceKindForTab(tab: KnowledgeTab): StudioKnowledgeSourceKind | undefined {\n switch (tab) {\n case \"static-context\":\n return \"static_context\";\n case \"dynamic-context\":\n return \"dynamic_context\";\n case \"dynamic-tools\":\n return \"dynamic_tools\";\n case \"retrieval-log\":\n return undefined;\n }\n}\n\nexport function tabLabel(tab: KnowledgeTab): string {\n return knowledgeTabs.find((item) => item.id === tab)?.label ?? \"Knowledge\";\n}\n\nexport function tabCountLabel(\n tab: KnowledgeTab,\n sources: KnowledgeSourceRef[],\n evidenceCount: number,\n): string {\n const sourceKind = sourceKindForTab(tab);\n if (sourceKind === undefined) {\n return `${evidenceCount} entries`;\n }\n const tabSources = sources.filter((source) => source.source.kind === sourceKind);\n const itemCount = sumKind(\n tabSources.map((source) => source.source),\n sourceKind,\n );\n return `${tabSources.length} sources / ${itemCount} items`;\n}\n\nexport function itemKindLabel(kind: StudioKnowledgeItem[\"kind\"]): string {\n switch (kind) {\n case \"static_context\":\n return \"Static context\";\n case \"dynamic_context\":\n return \"Dynamic context\";\n case \"dynamic_tool\":\n return \"Dynamic tool\";\n }\n}\n","import {\n Activity01Icon,\n BookOpenTextIcon,\n ChatIcon,\n DatabaseIcon,\n DatabaseLightningIcon,\n GaugeIcon,\n ListViewIcon,\n Plug01Icon,\n Robot01Icon,\n SearchList01Icon,\n Shield01Icon,\n ToolsIcon,\n WorkflowSquare01Icon,\n Wrench01Icon,\n} from \"@hugeicons/core-free-icons\";\nimport type { IconSvgElement } from \"@hugeicons/react\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { cn } from \"../../lib/utils\";\n\nexport function NavButton(props: {\n active: boolean;\n icon: IconName;\n label: string;\n onClick: () => void;\n disabled?: boolean;\n}) {\n const Icon = navIcon(props.icon);\n return (\n <Button\n className={cn(\n \"studio-sidebar-nav-button h-9 min-h-9 w-full justify-start gap-3 rounded-lg bg-transparent px-2.5 py-0.5 text-base font-medium text-sidebar-foreground/62 shadow-none transition duration-200 hover:text-sidebar-foreground active:translate-y-px [&_svg]:h-[17px] [&_svg]:w-[17px]\",\n props.active && \"studio-sidebar-nav-button-active text-sidebar-accent-foreground\",\n )}\n variant=\"ghost\"\n type=\"button\"\n disabled={props.disabled}\n onClick={props.onClick}\n >\n <StudioIcon icon={Icon} />\n <span>{props.label}</span>\n </Button>\n );\n}\n\ntype IconName =\n | \"activity\"\n | \"bot\"\n | \"book-open-text\"\n | \"database\"\n | \"database-lightning\"\n | \"gauge\"\n | \"list\"\n | \"message\"\n | \"plug\"\n | \"search-list\"\n | \"shield\"\n | \"tools\"\n | \"wrench\"\n | \"workflow\";\n\nfunction navIcon(name: IconName): IconSvgElement {\n switch (name) {\n case \"activity\":\n return Activity01Icon;\n case \"bot\":\n return Robot01Icon;\n case \"book-open-text\":\n return BookOpenTextIcon;\n case \"database\":\n return DatabaseIcon;\n case \"database-lightning\":\n return DatabaseLightningIcon;\n case \"gauge\":\n return GaugeIcon;\n case \"list\":\n return ListViewIcon;\n case \"message\":\n return ChatIcon;\n case \"plug\":\n return Plug01Icon;\n case \"search-list\":\n return SearchList01Icon;\n case \"shield\":\n return Shield01Icon;\n case \"tools\":\n return ToolsIcon;\n case \"wrench\":\n return Wrench01Icon;\n case \"workflow\":\n return WorkflowSquare01Icon;\n }\n}\n","import { ExternalLinkIcon, Moon02Icon, Sun02Icon } from \"@hugeicons/core-free-icons\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { knowledgeTabs } from \"../knowledge/knowledge-model\";\nimport { logoSrc } from \"../shared/path\";\nimport type { ActivePage, KnowledgeTab } from \"../shared/types\";\nimport { NavButton } from \"./nav-button\";\n\nconst knowledgeNavIcons = {\n \"static-context\": \"book-open-text\",\n \"dynamic-context\": \"database-lightning\",\n \"dynamic-tools\": \"tools\",\n \"retrieval-log\": \"search-list\",\n} as const;\n\nexport function StudioSidebar(props: {\n activePage: ActivePage;\n evalsEnabled: boolean;\n hasAgents: boolean;\n knowledgeEnabled: boolean;\n mcpsEnabled: boolean;\n memoryEnabled: boolean;\n pipelinesEnabled: boolean;\n sessionsEnabled: boolean;\n status: string;\n statusEnabled: boolean;\n toolsEnabled: boolean;\n tracesEnabled: boolean;\n knowledgeTab: KnowledgeTab;\n onNavigate: (page: ActivePage) => void;\n onNavigateKnowledgeTab: (tab: KnowledgeTab) => void;\n}) {\n return (\n <aside className=\"flex h-[100dvh] min-h-0 flex-col overflow-hidden border-r border-sidebar-border bg-sidebar text-sidebar-foreground\">\n <div className=\"flex h-15 items-center px-4\">\n <div className=\"studio-logo-lockup min-w-0\">\n <img className=\"h-auto w-[92px] shrink-0 object-contain\" src={logoSrc} alt=\"Anvia\" />\n <span className=\"studio-logo-badge\">Studio</span>\n </div>\n </div>\n <nav className=\"grid gap-0.5 px-3 py-3\" aria-label=\"Main\">\n <div className=\"px-2.5 pb-1.5 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground opacity-50\">\n Workspace\n </div>\n <NavButton\n active={props.activePage === \"playground\"}\n disabled={!props.hasAgents}\n icon=\"message\"\n label=\"Chat\"\n onClick={() => props.onNavigate(\"playground\")}\n />\n <NavButton\n active={props.activePage === \"pipelines\"}\n disabled={!props.pipelinesEnabled}\n icon=\"workflow\"\n label=\"Pipelines\"\n onClick={() => props.onNavigate(\"pipelines\")}\n />\n <NavButton\n active={props.activePage === \"evals\"}\n disabled={!props.evalsEnabled}\n icon=\"gauge\"\n label=\"Evals\"\n onClick={() => props.onNavigate(\"evals\")}\n />\n <NavButton\n active={props.activePage === \"sessions\"}\n disabled={!props.sessionsEnabled}\n icon=\"list\"\n label=\"Sessions\"\n onClick={() => props.onNavigate(\"sessions\")}\n />\n <NavButton\n active={props.activePage === \"tracing\"}\n disabled={!props.tracesEnabled}\n icon=\"activity\"\n label=\"Traces\"\n onClick={() => props.onNavigate(\"tracing\")}\n />\n </nav>\n <nav className=\"grid gap-0.5 px-3 py-3\" aria-label=\"Studio\">\n <div className=\"px-2.5 pb-1.5 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground opacity-50\">\n Inspect\n </div>\n <NavButton\n active={props.activePage === \"agents\"}\n icon=\"bot\"\n label=\"Studio\"\n onClick={() => props.onNavigate(\"agents\")}\n />\n <NavButton\n active={props.activePage === \"tools\"}\n disabled={!props.toolsEnabled}\n icon=\"wrench\"\n label=\"Tools\"\n onClick={() => props.onNavigate(\"tools\")}\n />\n <NavButton\n active={props.activePage === \"mcps\"}\n disabled={!props.mcpsEnabled}\n icon=\"plug\"\n label=\"MCPs\"\n onClick={() => props.onNavigate(\"mcps\")}\n />\n {knowledgeTabs.map((tab) => (\n <NavButton\n active={props.activePage === \"knowledge\" && props.knowledgeTab === tab.id}\n disabled={!props.knowledgeEnabled}\n icon={knowledgeNavIcons[tab.id]}\n key={tab.id}\n label={tab.label}\n onClick={() => props.onNavigateKnowledgeTab(tab.id)}\n />\n ))}\n <NavButton\n active={props.activePage === \"memory\"}\n disabled={!props.memoryEnabled}\n icon=\"database\"\n label=\"Memory\"\n onClick={() => props.onNavigate(\"memory\")}\n />\n <NavButton\n active={props.activePage === \"status\"}\n disabled={!props.statusEnabled}\n icon=\"gauge\"\n label=\"Status\"\n onClick={() => props.onNavigate(\"status\")}\n />\n </nav>\n <div className=\"mt-auto px-3 py-3\">\n <nav className=\"grid gap-1\" aria-label=\"Anvia links\">\n <SidebarLink href=\"https://anvia.dev/docs\" label=\"Anvia Docs\" />\n </nav>\n <span className=\"sr-only\" aria-live=\"polite\">\n {props.status}\n </span>\n </div>\n </aside>\n );\n}\n\nexport function StudioHeader(props: {\n activePage: ActivePage;\n selectedAgentLabel: string;\n sessionsEnabled: boolean;\n theme: \"light\" | \"dark\";\n onNavigate: (page: ActivePage) => void;\n onNewSession: () => void;\n onToggleTheme: () => void;\n}) {\n return (\n <header className=\"grid min-h-13 border-b border-border bg-background/88 backdrop-blur\">\n <div className=\"grid min-h-13 grid-cols-[minmax(0,1fr)_auto] items-center gap-3 py-0 pl-4 pr-6\">\n <div className=\"flex min-w-0 items-center gap-2 text-sm font-medium\">\n <span className=\"text-foreground\">\n {props.activePage === \"playground\" ? \"Agents\" : \"Studio\"}\n </span>\n <span className=\"text-muted-foreground\">/</span>\n <span className=\"truncate\">{props.selectedAgentLabel}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n aria-label={props.theme === \"dark\" ? \"Switch to light theme\" : \"Switch to dark theme\"}\n className=\"h-8 min-h-8 w-8 border-0 bg-transparent p-0 text-muted-foreground shadow-none hover:bg-muted/45 hover:text-foreground\"\n title={props.theme === \"dark\" ? \"Switch to light theme\" : \"Switch to dark theme\"}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={props.onToggleTheme}\n >\n {props.theme === \"dark\" ? (\n <StudioIcon icon={Sun02Icon} aria-hidden=\"true\" />\n ) : (\n <StudioIcon icon={Moon02Icon} aria-hidden=\"true\" />\n )}\n </Button>\n <Button\n className=\"h-8 min-h-8 rounded-lg border border-white bg-white px-3 text-xs text-black shadow-none [box-shadow:none] hover:border-white hover:bg-white/90 hover:text-black focus-visible:ring-0 active:bg-white/85 disabled:bg-muted disabled:text-muted-foreground\"\n type=\"button\"\n variant=\"ghost\"\n disabled={!props.sessionsEnabled}\n onClick={props.onNewSession}\n >\n New session\n </Button>\n </div>\n </div>\n </header>\n );\n}\n\nfunction SidebarLink(props: { href: string; label: string }) {\n return (\n <a\n className=\"flex h-8 min-h-8 items-center justify-between rounded-lg px-2 text-xs font-semibold text-sidebar-foreground/62 transition duration-200 hover:bg-sidebar-accent hover:text-sidebar-foreground\"\n href={props.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <span>{props.label}</span>\n <StudioIcon\n icon={ExternalLinkIcon}\n aria-hidden=\"true\"\n className=\"h-3 w-3 text-muted-foreground\"\n />\n </a>\n );\n}\n","import { Outlet } from \"@tanstack/react-router\";\nimport { Suspense } from \"react\";\nimport { DeleteSessionDialog } from \"../../app-pages\";\nimport { useStudioConsole } from \"../../studio-console-context\";\nimport { StudioHeader, StudioSidebar } from \"./studio-shell\";\n\nexport function StudioConsoleLayout() {\n const studio = useStudioConsole();\n\n return (\n <div className=\"grid h-[100dvh] min-h-0 overflow-hidden bg-background text-foreground lg:grid-cols-[228px_minmax(0,1fr)]\">\n <StudioSidebar\n activePage={studio.activePage}\n evalsEnabled={studio.evalsEnabled}\n hasAgents={studio.hasAgents}\n knowledgeEnabled={studio.knowledgeEnabled}\n mcpsEnabled={studio.mcpsEnabled}\n memoryEnabled={studio.memoryEnabled}\n pipelinesEnabled={studio.pipelinesEnabled}\n sessionsEnabled={studio.sessionsEnabled}\n status={studio.status}\n statusEnabled={studio.statusEnabled}\n toolsEnabled={studio.toolsEnabled}\n tracesEnabled={studio.tracesEnabled}\n knowledgeTab={studio.knowledgeTab}\n onNavigate={studio.navigatePage}\n onNavigateKnowledgeTab={studio.navigateKnowledgeTab}\n />\n\n <main className=\"grid h-[100dvh] min-w-0 grid-rows-[52px_minmax(0,1fr)] overflow-hidden bg-background/80\">\n <StudioHeader\n activePage={studio.activePage}\n selectedAgentLabel={studio.selectedAgent?.name ?? studio.selectedAgent?.id ?? \"Agent\"}\n sessionsEnabled={studio.sessionsEnabled}\n theme={studio.theme}\n onNavigate={studio.navigatePage}\n onNewSession={() => studio.startNewChat()}\n onToggleTheme={studio.toggleTheme}\n />\n <Outlet />\n </main>\n\n <Suspense fallback={null}>\n <DeleteSessionDialog\n session={studio.deleteCandidate}\n onOpenChange={(open) => {\n if (!open) {\n studio.setDeleteCandidate(undefined);\n }\n }}\n onConfirm={(session) => {\n void studio.sessions.deleteSession(session).finally(() => {\n studio.setDeleteCandidate(undefined);\n });\n }}\n />\n </Suspense>\n </div>\n );\n}\n","import { useEffect } from \"react\";\nimport type { ActivePage, KnowledgeTab } from \"../modules/shared/types\";\nimport { useStudioConsole } from \"../studio-console-context\";\n\nexport function useActivatedRoute(page: ActivePage) {\n const studio = useStudioConsole();\n const { activateRoute } = studio;\n useEffect(() => {\n activateRoute(page);\n }, [activateRoute, page]);\n return studio;\n}\n\nexport function knowledgeTabFromRoute(tab: string | undefined): KnowledgeTab {\n switch (tab) {\n case \"dynamic-context\":\n case \"dynamic-tools\":\n case \"retrieval-log\":\n case \"static-context\":\n return tab;\n default:\n return \"static-context\";\n }\n}\n","import { Suspense } from \"react\";\nimport { AgentsPage, PageLoading } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function AgentsRoute() {\n const studio = useActivatedRoute(\"agents\");\n return (\n <Suspense fallback={<PageLoading />}>\n <AgentsPage agents={studio.agents} selectedAgentId={studio.selectedAgentId} />\n </Suspense>\n );\n}\n","import { useState } from \"react\";\nimport type { StudioConfig, StudioEvalRunResponse } from \"../../../../types\";\nimport { responseErrorMessage } from \"../../app-errors\";\nimport { EvalsPage } from \"../../app-pages\";\nimport { errorMessage } from \"../shared/format\";\nimport type { RunState } from \"../shared/types\";\n\nexport function EvalsContainer(props: {\n enabled: boolean;\n evals: StudioConfig[\"evals\"];\n onError: (message: string) => void;\n onStatus: (status: string) => void;\n}) {\n const [selectedEvalId, setSelectedEvalId] = useState(\"\");\n const [evalRunResult, setEvalRunResult] = useState<StudioEvalRunResponse | undefined>();\n const [evalRunState, setEvalRunState] = useState<RunState>(\"idle\");\n\n async function runEvalSuite() {\n const evalId = selectedEvalId || props.evals[0]?.id || \"\";\n if (evalId.length === 0 || evalRunState === \"running\") {\n return;\n }\n\n setEvalRunState(\"running\");\n setEvalRunResult(undefined);\n props.onError(\"\");\n try {\n const response = await fetch(`/evals/${encodeURIComponent(evalId)}/runs`, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({}),\n });\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, \"Eval run failed\"));\n }\n setEvalRunResult((await response.json()) as StudioEvalRunResponse);\n props.onStatus(\"Connected\");\n } catch (runError) {\n props.onError(errorMessage(runError));\n } finally {\n setEvalRunState(\"idle\");\n }\n }\n\n return (\n <EvalsPage\n evals={props.evals}\n selectedEvalId={selectedEvalId}\n enabled={props.enabled}\n runState={evalRunState}\n result={evalRunResult}\n onSelectEval={(evalId) => {\n setSelectedEvalId(evalId);\n setEvalRunResult(undefined);\n }}\n onRun={() => void runEvalSuite()}\n />\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { EvalsContainer } from \"../modules/evals/evals-container\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function EvalsRoute() {\n const studio = useActivatedRoute(\"evals\");\n return (\n <Suspense fallback={<PageLoading />}>\n <EvalsContainer\n evals={studio.evals}\n enabled={studio.evalsEnabled}\n onError={studio.setError}\n onStatus={studio.setStatus}\n />\n </Suspense>\n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport type {\n StudioAgentMcpsSummary,\n StudioAgentToolsSummary,\n StudioConfig,\n StudioKnowledgeSummary,\n} from \"../../../../types\";\nimport { KnowledgePage, McpsPage, ToolsPage } from \"../../app-pages\";\nimport { errorMessage } from \"../shared/format\";\nimport type { KnowledgeTab } from \"../shared/types\";\n\nexport function ToolsContainer(props: {\n active: boolean;\n agents: StudioConfig[\"agents\"];\n enabled: boolean;\n selectedAgentId: string;\n onError: (message: string) => void;\n}) {\n const [toolsAgentId, setToolsAgentId] = useState(\"\");\n const [tools, setTools] = useState<StudioAgentToolsSummary | undefined>();\n const [toolsLoadState, setToolsLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n\n const loadTools = useCallback(\n async (agentId: string) => {\n if (!props.enabled || agentId.length === 0) {\n setTools(undefined);\n return;\n }\n\n setToolsLoadState(\"loading\");\n try {\n const response = await fetch(`/agents/${encodeURIComponent(agentId)}/tools`);\n if (!response.ok) {\n throw new Error(`Tools failed with HTTP ${response.status}`);\n }\n setTools((await response.json()) as StudioAgentToolsSummary);\n } catch (loadError) {\n props.onError(errorMessage(loadError));\n setTools(undefined);\n } finally {\n setToolsLoadState(\"idle\");\n }\n },\n [props.enabled, props.onError],\n );\n\n useEffect(() => {\n if (props.active) {\n void loadTools(toolsAgentId || props.selectedAgentId);\n }\n }, [props.active, loadTools, props.selectedAgentId, toolsAgentId]);\n\n return (\n <ToolsPage\n agents={props.agents}\n selectedAgentId={toolsAgentId || props.selectedAgentId}\n summary={tools}\n enabled={props.enabled}\n loading={toolsLoadState === \"loading\"}\n onSelectAgent={(agentId) => {\n setToolsAgentId(agentId);\n void loadTools(agentId);\n }}\n />\n );\n}\n\nexport function McpsContainer(props: {\n active: boolean;\n agents: StudioConfig[\"agents\"];\n enabled: boolean;\n selectedAgentId: string;\n onError: (message: string) => void;\n}) {\n const [mcpsAgentId, setMcpsAgentId] = useState(\"\");\n const [mcps, setMcps] = useState<StudioAgentMcpsSummary | undefined>();\n const [mcpsLoadState, setMcpsLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n\n const loadMcps = useCallback(\n async (agentId: string) => {\n if (!props.enabled || agentId.length === 0) {\n setMcps(undefined);\n return;\n }\n\n setMcpsLoadState(\"loading\");\n try {\n const response = await fetch(`/agents/${encodeURIComponent(agentId)}/mcps`);\n if (!response.ok) {\n throw new Error(`MCPs failed with HTTP ${response.status}`);\n }\n setMcps((await response.json()) as StudioAgentMcpsSummary);\n } catch (loadError) {\n props.onError(errorMessage(loadError));\n setMcps(undefined);\n } finally {\n setMcpsLoadState(\"idle\");\n }\n },\n [props.enabled, props.onError],\n );\n\n useEffect(() => {\n if (props.active) {\n void loadMcps(mcpsAgentId || props.selectedAgentId);\n }\n }, [props.active, loadMcps, mcpsAgentId, props.selectedAgentId]);\n\n return (\n <McpsPage\n agents={props.agents}\n selectedAgentId={mcpsAgentId || props.selectedAgentId}\n summary={mcps}\n enabled={props.enabled}\n loading={mcpsLoadState === \"loading\"}\n onSelectAgent={(agentId) => {\n setMcpsAgentId(agentId);\n void loadMcps(agentId);\n }}\n />\n );\n}\n\nexport function KnowledgeContainer(props: {\n active: boolean;\n activeTab: KnowledgeTab;\n enabled: boolean;\n onError: (message: string) => void;\n onOpenTrace: (traceId: string) => void;\n}) {\n const [knowledge, setKnowledge] = useState<StudioKnowledgeSummary | undefined>();\n const [knowledgeLoadState, setKnowledgeLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n\n const loadKnowledge = useCallback(async () => {\n if (!props.enabled) {\n setKnowledge(undefined);\n return;\n }\n\n setKnowledgeLoadState(\"loading\");\n try {\n const response = await fetch(\"/knowledge?limit=25\");\n if (!response.ok) {\n throw new Error(`Knowledge failed with HTTP ${response.status}`);\n }\n setKnowledge((await response.json()) as StudioKnowledgeSummary);\n } catch (loadError) {\n props.onError(errorMessage(loadError));\n } finally {\n setKnowledgeLoadState(\"idle\");\n }\n }, [props.enabled, props.onError]);\n\n useEffect(() => {\n if (props.active) {\n void loadKnowledge();\n }\n }, [props.active, loadKnowledge]);\n\n return (\n <KnowledgePage\n activeTab={props.activeTab}\n enabled={props.enabled}\n summary={knowledge}\n loading={knowledgeLoadState === \"loading\"}\n onOpenTrace={props.onOpenTrace}\n onRefresh={() => void loadKnowledge()}\n />\n );\n}\n","import { useParams } from \"@tanstack/react-router\";\nimport { Suspense, useEffect } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { KnowledgeContainer } from \"../modules/inspectors/inspectors-containers\";\nimport { knowledgeTabFromRoute, useActivatedRoute } from \"./route-helpers\";\n\nexport function KnowledgeRoute() {\n const studio = useActivatedRoute(\"knowledge\");\n const { setKnowledgeTab } = studio;\n const params = useParams({ strict: false }) as { tab?: string };\n const tab = knowledgeTabFromRoute(params.tab);\n\n useEffect(() => {\n setKnowledgeTab(tab);\n }, [setKnowledgeTab, tab]);\n\n return (\n <Suspense fallback={<PageLoading />}>\n <KnowledgeContainer\n active\n activeTab={tab}\n enabled={studio.knowledgeEnabled}\n onError={studio.setError}\n onOpenTrace={studio.traces.selectTrace}\n />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { McpsContainer } from \"../modules/inspectors/inspectors-containers\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function McpsRoute() {\n const studio = useActivatedRoute(\"mcps\");\n return (\n <Suspense fallback={<PageLoading />}>\n <McpsContainer\n active\n agents={studio.agents}\n enabled={studio.mcpsEnabled}\n selectedAgentId={studio.selectedAgent?.id || studio.selectedAgentId}\n onError={studio.setError}\n />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { MemoryPage, PageLoading } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function MemoryRoute() {\n const studio = useActivatedRoute(\"memory\");\n return (\n <Suspense fallback={<PageLoading />}>\n <MemoryPage agents={studio.agents} enabled={studio.memoryEnabled} />\n </Suspense>\n );\n}\n","import { createFetchTransport, EventStreamHttpError } from \"@anvia/react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type {\n StudioConfig,\n StudioPipelineDetail,\n StudioPipelineLogEntry,\n StudioPipelineRunRecord,\n} from \"../../../../types\";\nimport { eventStreamResponseErrorMessage } from \"../../app-errors\";\nimport { isErrorStreamEvent, isPipelineFinalEvent, isPipelineLogEvent } from \"../../app-helpers\";\nimport { errorMessage } from \"../shared/format\";\nimport { nextPaint } from \"../shared/transcript\";\nimport type { RunState } from \"../shared/types\";\n\ntype PipelineRunStreamRequest = {\n endpoint: string;\n body: Record<string, unknown>;\n};\n\nconst pipelineRunStreamTransport = createFetchTransport<PipelineRunStreamRequest, unknown>({\n endpoint: (request) => request.endpoint,\n method: \"POST\",\n format: \"jsonl\",\n headers: { \"content-type\": \"application/json\" },\n body: (request) => JSON.stringify(request.body),\n});\n\nexport function usePipelines(props: {\n active: boolean;\n enabled: boolean;\n pipelines: StudioConfig[\"pipelines\"];\n onError: (message: string) => void;\n onStatus: (status: string) => void;\n}) {\n const [selectedPipelineId, setSelectedPipelineId] = useState(\"\");\n const [pipelineDetail, setPipelineDetail] = useState<StudioPipelineDetail | undefined>();\n const [pipelineLogs, setPipelineLogs] = useState<StudioPipelineLogEntry[]>([]);\n const [pipelineRuns, setPipelineRuns] = useState<StudioPipelineRunRecord[]>([]);\n const [pipelineRunInput, setPipelineRunInput] = useState('\"Hello from Studio\"');\n const [pipelineRunOutput, setPipelineRunOutput] = useState(\"\");\n const [activePipelineRunId, setActivePipelineRunId] = useState(\"\");\n const [pipelineDetailLoadState, setPipelineDetailLoadState] = useState<\"idle\" | \"loading\">(\n \"idle\",\n );\n const [pipelineLogLoadState, setPipelineLogLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n const [pipelineRunLoadState, setPipelineRunLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n const [pipelineRunState, setPipelineRunState] = useState<RunState>(\"idle\");\n const pipelineDetailRequestRef = useRef(0);\n const pipelineLogRequestRef = useRef(0);\n\n const loadPipelineLogs = useCallback(\n async (pipelineId: string): Promise<StudioPipelineLogEntry[]> => {\n if (!props.enabled || pipelineId.length === 0) {\n pipelineLogRequestRef.current += 1;\n setPipelineLogs([]);\n return [];\n }\n\n const requestId = pipelineLogRequestRef.current + 1;\n pipelineLogRequestRef.current = requestId;\n setPipelineLogLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ limit: \"1000\" });\n const response = await fetch(`/pipelines/${encodeURIComponent(pipelineId)}/logs?${params}`);\n if (!response.ok) {\n throw new Error(`Pipeline logs failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { logs: StudioPipelineLogEntry[] };\n if (pipelineLogRequestRef.current === requestId) {\n setPipelineLogs(body.logs);\n }\n return body.logs;\n } catch (loadError) {\n if (pipelineLogRequestRef.current === requestId) {\n props.onError(errorMessage(loadError));\n setPipelineLogs([]);\n }\n return [];\n } finally {\n if (pipelineLogRequestRef.current === requestId) {\n setPipelineLogLoadState(\"idle\");\n }\n }\n },\n [props.enabled, props.onError],\n );\n\n const loadPipelineRuns = useCallback(\n async (pipelineId: string): Promise<StudioPipelineRunRecord[]> => {\n if (!props.enabled || pipelineId.length === 0) {\n setPipelineRuns([]);\n return [];\n }\n\n setPipelineRunLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ limit: \"50\" });\n const response = await fetch(`/pipelines/${encodeURIComponent(pipelineId)}/runs?${params}`);\n if (!response.ok) {\n throw new Error(`Pipeline runs failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { runs: StudioPipelineRunRecord[] };\n setPipelineRuns(body.runs);\n return body.runs;\n } catch (loadError) {\n props.onError(errorMessage(loadError));\n setPipelineRuns([]);\n return [];\n } finally {\n setPipelineRunLoadState(\"idle\");\n }\n },\n [props.enabled, props.onError],\n );\n\n const loadPipeline = useCallback(\n async (pipelineId: string) => {\n if (!props.enabled || pipelineId.length === 0) {\n pipelineDetailRequestRef.current += 1;\n setPipelineDetail(undefined);\n setPipelineLogs([]);\n setPipelineRuns([]);\n return;\n }\n\n const requestId = pipelineDetailRequestRef.current + 1;\n pipelineDetailRequestRef.current = requestId;\n setPipelineDetailLoadState(\"loading\");\n props.onError(\"\");\n try {\n const response = await fetch(`/pipelines/${encodeURIComponent(pipelineId)}`);\n if (!response.ok) {\n throw new Error(`Pipeline load failed with HTTP ${response.status}`);\n }\n const detail = (await response.json()) as StudioPipelineDetail;\n if (pipelineDetailRequestRef.current !== requestId) {\n return;\n }\n setSelectedPipelineId(pipelineId);\n setPipelineDetail(detail);\n await Promise.all([loadPipelineLogs(pipelineId), loadPipelineRuns(pipelineId)]);\n } catch (loadError) {\n if (pipelineDetailRequestRef.current === requestId) {\n props.onError(errorMessage(loadError));\n setPipelineDetail(undefined);\n }\n } finally {\n if (pipelineDetailRequestRef.current === requestId) {\n setPipelineDetailLoadState(\"idle\");\n }\n }\n },\n [loadPipelineLogs, loadPipelineRuns, props.enabled, props.onError],\n );\n\n useEffect(() => {\n if (!props.active) {\n return;\n }\n const pipelineId = selectedPipelineId || props.pipelines[0]?.id || \"\";\n if (pipelineId.length > 0) {\n void loadPipeline(pipelineId);\n }\n }, [props.active, props.pipelines, loadPipeline, selectedPipelineId]);\n\n async function consumePipelineRunStream(events: AsyncIterable<unknown>) {\n for await (const event of events) {\n if (isPipelineLogEvent(event)) {\n if (event.log.runId !== undefined) {\n setActivePipelineRunId((current) => current || event.log.runId || \"\");\n }\n appendPipelineLogEntry(event.log);\n await nextPaint();\n continue;\n }\n if (isPipelineFinalEvent(event)) {\n setPipelineRunOutput(formatPipelineOutput(event.output));\n await nextPaint();\n continue;\n }\n if (isErrorStreamEvent(event)) {\n throw new Error(JSON.stringify(event.error));\n }\n }\n }\n\n async function runPipeline() {\n const pipelineId = selectedPipelineId || props.pipelines[0]?.id || \"\";\n if (pipelineId.length === 0 || pipelineRunState === \"running\") {\n return;\n }\n\n let input: unknown;\n try {\n input = JSON.parse(pipelineRunInput);\n } catch {\n props.onError(\"Pipeline input must be valid JSON\");\n return;\n }\n\n setPipelineRunState(\"running\");\n setPipelineRunOutput(\"\");\n setActivePipelineRunId(\"\");\n props.onError(\"\");\n try {\n await consumePipelineRunStream(\n pipelineRunStreamTransport.send({\n endpoint: `/pipelines/${encodeURIComponent(pipelineId)}/runs`,\n body: {\n input,\n stream: true,\n metadata: { source: \"anvia-studio\" },\n },\n }),\n );\n await Promise.all([loadPipelineLogs(pipelineId), loadPipelineRuns(pipelineId)]);\n props.onStatus(\"Connected\");\n } catch (runError) {\n props.onError(pipelineStreamErrorMessage(runError, \"Pipeline run failed\"));\n } finally {\n setPipelineRunState(\"idle\");\n }\n }\n\n async function replayPipelineRun(runId: string) {\n const pipelineId = selectedPipelineId || props.pipelines[0]?.id || \"\";\n if (pipelineId.length === 0 || runId.length === 0 || pipelineRunState === \"running\") {\n return;\n }\n\n setPipelineRunState(\"running\");\n setPipelineRunOutput(\"\");\n setActivePipelineRunId(\"\");\n props.onError(\"\");\n try {\n await consumePipelineRunStream(\n pipelineRunStreamTransport.send({\n endpoint: `/pipelines/${encodeURIComponent(pipelineId)}/runs/${encodeURIComponent(\n runId,\n )}/replay`,\n body: {\n stream: true,\n metadata: { source: \"anvia-studio\" },\n },\n }),\n );\n await Promise.all([loadPipelineLogs(pipelineId), loadPipelineRuns(pipelineId)]);\n props.onStatus(\"Connected\");\n } catch (runError) {\n props.onError(pipelineStreamErrorMessage(runError, \"Pipeline replay failed\"));\n } finally {\n setPipelineRunState(\"idle\");\n }\n }\n\n function selectPipeline(pipelineId: string) {\n setSelectedPipelineId(pipelineId);\n setPipelineRunOutput(\"\");\n setActivePipelineRunId(\"\");\n void loadPipeline(pipelineId);\n }\n\n function appendPipelineLogEntry(log: StudioPipelineLogEntry) {\n setPipelineLogs((current) => {\n if (current.some((item) => item.id === log.id)) {\n return current;\n }\n return [...current, log].sort((left, right) => left.sequence - right.sequence);\n });\n }\n\n return {\n selectedPipelineId,\n pipelineDetail,\n pipelineLogs,\n pipelineRuns,\n activePipelineRunId,\n pipelineRunInput,\n pipelineRunOutput,\n pipelineDetailLoadState,\n pipelineLogLoadState,\n pipelineRunLoadState,\n pipelineRunState,\n setPipelineRunInput,\n selectPipeline,\n runPipeline,\n replayPipelineRun,\n };\n}\n\nfunction pipelineStreamErrorMessage(error: unknown, label: string): string {\n if (error instanceof EventStreamHttpError) {\n return eventStreamResponseErrorMessage(error, label);\n }\n return errorMessage(error);\n}\n\nfunction formatPipelineOutput(output: unknown): string {\n return typeof output === \"string\" ? output : JSON.stringify(output, null, 2);\n}\n","import type { StudioConfig } from \"../../../../types\";\nimport { PipelinesPage } from \"../../app-pages\";\nimport type { StudioTheme } from \"../../app-theme\";\nimport type { PipelineSidebarTab } from \"./pipelines-page\";\nimport { usePipelines } from \"./use-pipelines\";\n\nexport function PipelinesContainer(props: {\n active: boolean;\n enabled: boolean;\n pipelines: StudioConfig[\"pipelines\"];\n theme: StudioTheme;\n activeTab: PipelineSidebarTab;\n onError: (message: string) => void;\n onStatus: (status: string) => void;\n onTabChange: (tab: PipelineSidebarTab) => void;\n}) {\n const pipelines = usePipelines({\n active: props.active,\n enabled: props.enabled,\n pipelines: props.pipelines,\n onError: props.onError,\n onStatus: props.onStatus,\n });\n\n return (\n <PipelinesPage\n pipelines={props.pipelines}\n selectedPipelineId={pipelines.selectedPipelineId}\n detail={pipelines.pipelineDetail}\n logs={pipelines.pipelineLogs}\n activeRunId={pipelines.activePipelineRunId}\n runs={pipelines.pipelineRuns}\n enabled={props.enabled}\n detailLoading={pipelines.pipelineDetailLoadState === \"loading\"}\n logsLoading={pipelines.pipelineLogLoadState === \"loading\"}\n runsLoading={pipelines.pipelineRunLoadState === \"loading\"}\n runState={pipelines.pipelineRunState}\n runInput={pipelines.pipelineRunInput}\n runOutput={pipelines.pipelineRunOutput}\n theme={props.theme}\n activeTab={props.activeTab}\n onSelectPipeline={pipelines.selectPipeline}\n onRunInputChange={pipelines.setPipelineRunInput}\n onRun={() => void pipelines.runPipeline()}\n onTabChange={props.onTabChange}\n onReplayRun={(runId) => void pipelines.replayPipelineRun(runId)}\n />\n );\n}\n","import { Suspense, useCallback, useEffect, useState } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { PipelinesContainer } from \"../modules/pipelines/pipelines-container\";\nimport type { PipelineSidebarTab } from \"../modules/pipelines/pipelines-page\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function PipelinesRoute() {\n const studio = useActivatedRoute(\"pipelines\");\n const [activeTab, setActiveTab] = useState<PipelineSidebarTab>(() => tabFromLocation());\n\n useEffect(() => {\n function syncTabFromLocation() {\n setActiveTab(tabFromLocation());\n }\n\n window.addEventListener(\"popstate\", syncTabFromLocation);\n return () => window.removeEventListener(\"popstate\", syncTabFromLocation);\n }, []);\n\n const updateTab = useCallback((tab: PipelineSidebarTab) => {\n setActiveTab(tab);\n const url = new URL(window.location.href);\n url.searchParams.set(\"tab\", tab);\n const nextUrl = `${url.pathname}${url.search}${url.hash}`;\n if (`${window.location.pathname}${window.location.search}${window.location.hash}` !== nextUrl) {\n window.history.pushState(null, \"\", nextUrl);\n }\n }, []);\n\n return (\n <Suspense fallback={<PageLoading />}>\n <PipelinesContainer\n active\n activeTab={activeTab}\n pipelines={studio.pipelines}\n enabled={studio.pipelinesEnabled}\n theme={studio.theme}\n onError={studio.setError}\n onStatus={studio.setStatus}\n onTabChange={updateTab}\n />\n </Suspense>\n );\n}\n\nfunction tabFromLocation(): PipelineSidebarTab {\n return pipelineSidebarTab(window.location.search);\n}\n\nfunction pipelineSidebarTab(search: string): PipelineSidebarTab {\n const tab = new URLSearchParams(search).get(\"tab\");\n if (tab === \"metadata\" || tab === \"runs\" || tab === \"logs\") {\n return tab;\n }\n return \"input\";\n}\n","// src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n Context.displayName = rootComponentName + \"Context\";\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n BaseContext.displayName = rootComponentName + \"Context\";\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport * as React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => ((...args) => callbackRef.current?.(...args)), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-effect-event.tsx\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport * as React from \"react\";\nvar useReactEffectEvent = React[\" useEffectEvent \".trim().toString()];\nvar useReactInsertionEffect = React[\" useInsertionEffect \".trim().toString()];\nfunction useEffectEvent(callback) {\n if (typeof useReactEffectEvent === \"function\") {\n return useReactEffectEvent(callback);\n }\n const ref = React.useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n if (typeof useReactInsertionEffect === \"function\") {\n useReactInsertionEffect(() => {\n ref.current = callback;\n });\n } else {\n useLayoutEffect(() => {\n ref.current = callback;\n });\n }\n return React.useMemo(() => ((...args) => ref.current?.(...args)), []);\n}\nexport {\n useEffectEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set(),\n // Outside elements that belong to a layer's own dismiss affordance (eg, a\n // dialog overlay). Pressing them should dismiss the layer regardless of\n // whether or not they stop propagation.\n //\n // See https://github.com/radix-ui/primitives/issues/3346\n dismissableSurfaces: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n deferPointerDownOutside = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, setNode);\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const isDeferredPointerDownOutsideRef = React.useRef(false);\n const pointerDownOutside = usePointerDownOutside(\n (event) => {\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n const isPointerDownOnBranch = [...context.branches].some(\n (branch) => branch.contains(target)\n );\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n },\n {\n ownerDocument,\n deferPointerDownOutside,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces: context.dismissableSurfaces\n }\n );\n const focusOutside = useFocusOutside((event) => {\n if (deferPointerDownOutside && isDeferredPointerDownOutsideRef.current) {\n return;\n }\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const isHighestLayer = node ? index === layers.length - 1 : false;\n const handleKeyDown = useEffectEvent((event) => {\n if (event.key !== \"Escape\") {\n return;\n }\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n });\n React.useEffect(() => {\n if (!isHighestLayer) {\n return;\n }\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [ownerDocument, isHighestLayer]);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents) {\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction useDismissableLayerSurface() {\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n React.useEffect(() => {\n if (!node) {\n return;\n }\n context.dismissableSurfaces.add(node);\n return () => {\n context.dismissableSurfaces.delete(node);\n };\n }, [node, context.dismissableSurfaces]);\n return setNode;\n}\nfunction usePointerDownOutside(onPointerDownOutside, args) {\n const {\n ownerDocument = globalThis?.document,\n deferPointerDownOutside = false,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces\n } = args;\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const isPointerDownOutsideRef = React.useRef(false);\n const interceptedOutsideInteractionEventsRef = React.useRef(/* @__PURE__ */ new Map());\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n function resetOutsideInteraction() {\n isPointerDownOutsideRef.current = false;\n isDeferredPointerDownOutsideRef.current = false;\n interceptedOutsideInteractionEventsRef.current.clear();\n }\n function isOutsideInteractionIntercepted() {\n return Array.from(interceptedOutsideInteractionEventsRef.current.values()).some(Boolean);\n }\n function handleInteractionCapture(event) {\n if (!isPointerDownOutsideRef.current) {\n return;\n }\n const target = event.target;\n const isDismissableSurface = target instanceof Node && [...dismissableSurfaces].some((surface) => surface.contains(target));\n if (!isDismissableSurface) {\n interceptedOutsideInteractionEventsRef.current.set(event.type, true);\n }\n if (event.type === \"click\") {\n window.setTimeout(() => {\n if (isPointerDownOutsideRef.current) {\n handleClickRef.current();\n }\n }, 0);\n }\n }\n function handleInteractionBubble(event) {\n if (isPointerDownOutsideRef.current) {\n interceptedOutsideInteractionEventsRef.current.set(event.type, false);\n }\n }\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n const wasOutsideInteractionIntercepted = isOutsideInteractionIntercepted();\n resetOutsideInteraction();\n if (!wasOutsideInteractionIntercepted) {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n isPointerDownOutsideRef.current = true;\n isDeferredPointerDownOutsideRef.current = deferPointerDownOutside && event.button === 0;\n interceptedOutsideInteractionEventsRef.current.clear();\n if (!deferPointerDownOutside || event.button !== 0) {\n handleAndDispatchPointerDownOutsideEvent2();\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n resetOutsideInteraction();\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const outsideInteractionEvents = [\n \"pointerup\",\n \"mousedown\",\n \"mouseup\",\n \"touchstart\",\n \"touchend\",\n \"click\"\n ];\n for (const eventName of outsideInteractionEvents) {\n ownerDocument.addEventListener(eventName, handleInteractionCapture, true);\n ownerDocument.addEventListener(eventName, handleInteractionBubble);\n }\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n for (const eventName of outsideInteractionEvents) {\n ownerDocument.removeEventListener(eventName, handleInteractionCapture, true);\n ownerDocument.removeEventListener(eventName, handleInteractionBubble);\n }\n };\n }, [\n ownerDocument,\n handlePointerDownOutside,\n deferPointerDownOutside,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces\n ]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root,\n useDismissableLayerSurface\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nvar guards = null;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n if (!guards) {\n guards = { start: createFocusGuard(), end: createFocusGuard() };\n }\n const { start, end } = guards;\n if (document.body.firstElementChild !== start) {\n document.body.insertAdjacentElement(\"afterbegin\", start);\n }\n if (document.body.lastElementChild !== end) {\n document.body.insertAdjacentElement(\"beforeend\", end);\n }\n count++;\n return () => {\n if (count === 1) {\n guards?.start.remove();\n guards?.end.remove();\n guards = null;\n }\n count = Math.max(0, count - 1);\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, setContainer);\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => {\n const result = offset$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => {\n const result = shift$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => {\n const result = limitShift$1(options);\n return {\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => {\n const result = flip$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => {\n const result = size$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => {\n const result = autoPlacement$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => {\n const result = hide$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => {\n const result = inline$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => {\n const result = arrow$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n const [placementState, setPlacementState] = React.useState(void 0);\n return /* @__PURE__ */ jsx(\n PopperProvider,\n {\n scope: __scopePopper,\n anchor,\n onAnchorChange: setAnchor,\n placementState,\n setPlacementState,\n children\n }\n );\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const onAnchorChange = context.onAnchorChange;\n const callbackRef = React.useCallback(\n (node) => {\n ref.current = node;\n if (node) {\n onAnchorChange(node);\n }\n },\n [onAnchorChange]\n );\n const composedRefs = useComposedRefs(forwardedRef, callbackRef);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n if (!virtualRef) {\n return;\n }\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef.current;\n if (previousAnchor !== anchorRef.current) {\n onAnchorChange(anchorRef.current);\n }\n });\n const sideAndAlign = context.placementState && getSideAndAlignFromPlacement(context.placementState);\n const placedSide = sideAndAlign?.[0];\n const placedAlign = sideAndAlign?.[1];\n return virtualRef ? null : /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-popper-side\": placedSide,\n \"data-radix-popper-align\": placedAlign,\n ...anchorProps,\n ref: composedRefs\n }\n );\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, setContent);\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({\n strategy: \"referenceHidden\",\n ...detectOverflowOptions,\n // `hide` detects whether the anchor (reference) is clipped, so when\n // no explicit `collisionBoundary` is set we fall back to Floating\n // UI's default clipping ancestors (e.g. a scrollable menu). This\n // lets an occluded submenu hide once its anchor scrolls out of view\n // (#3237). The collision/size middlewares deliberately keep the\n // viewport-based default to avoid clamping content rendered inside\n // transformed or overflow-clipping portal containers.\n boundary: hasExplicitBoundaries ? detectOverflowOptions.boundary : void 0\n })\n ]\n });\n const setPlacementState = context.setPlacementState;\n useLayoutEffect(() => {\n setPlacementState(placement);\n return () => {\n setPlacementState(void 0);\n };\n }, [placement, setPlacementState]);\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n \"--radix-popper-transform-origin\": [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n placedAlign,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useStableComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction useStableComposedRefs(...refs) {\n const refsRef = React2.useRef(refs);\n refsRef.current = refs;\n return React2.useCallback((node) => {\n const currentRefs = refsRef.current;\n let hasCleanup = false;\n const cleanups = currentRefs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup === \"function\") {\n cleanup();\n } else {\n setRef(currentRefs[i], null);\n }\n }\n };\n }\n }, []);\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\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 { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VISUALLY_HIDDEN_STYLES } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment as Fragment2, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProviderImpl, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar PROVIDER_NAME = \"SelectProvider\";\nfunction SelectProvider(props) {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required,\n form,\n // @ts-expect-error internal render prop used by `Select` to compose its default parts\n internal_do_not_use_render\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState(null);\n const [valueNode, setValueNode] = React.useState(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: SELECT_NAME\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n caller: SELECT_NAME\n });\n const triggerPointerDownPosRef = React.useRef(null);\n const isFormControl = trigger ? !!form || !!trigger.closest(\"form\") : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n const contentId = useId();\n const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n const handleNativeOptionAdd = React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, []);\n const handleNativeOptionRemove = React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, []);\n const context = {\n required,\n trigger,\n onTriggerChange: setTrigger,\n valueNode,\n onValueNodeChange: setValueNode,\n valueNodeHasChildren,\n onValueNodeHasChildrenChange: setValueNodeHasChildren,\n contentId,\n value,\n onValueChange: setValue,\n open,\n onOpenChange: setOpen,\n dir: direction,\n triggerPointerDownPosRef,\n disabled,\n name,\n autoComplete,\n form,\n nativeOptions: nativeOptionsSet,\n nativeSelectKey,\n isFormControl\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(SelectProviderImpl, { scope: __scopeSelect, ...context, children: /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n SelectNativeOptionsProvider,\n {\n scope: __scopeSelect,\n onNativeOptionAdd: handleNativeOptionAdd,\n onNativeOptionRemove: handleNativeOptionRemove,\n children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n }\n ) }) }) });\n}\nSelectProvider.displayName = PROVIDER_NAME;\nvar Select = (props) => {\n const { __scopeSelect, children, ...providerProps } = props;\n return /* @__PURE__ */ jsx(\n SelectProvider,\n {\n __scopeSelect,\n ...providerProps,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment2, { children: [\n children,\n isFormControl ? /* @__PURE__ */ jsx(\n SelectBubbleInput,\n {\n __scopeSelect\n }\n ) : null\n ] })\n }\n );\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const pointerTypeRef = React.useRef(\"touch\");\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== void 0) {\n context.onValueChange(nextItem.value);\n }\n });\n const handleOpen = (pointerEvent) => {\n if (!isDisabled) {\n context.onOpenChange(true);\n resetTypeahead();\n }\n if (pointerEvent) {\n context.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n };\n }\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"aria-expanded\": context.open,\n \"aria-required\": context.required,\n \"aria-autocomplete\": \"none\",\n dir: context.dir,\n \"data-state\": context.open ? \"open\" : \"closed\",\n disabled: isDisabled,\n \"data-disabled\": isDisabled ? \"\" : void 0,\n \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n ...triggerProps,\n ref: composedRefs,\n onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n event.currentTarget.focus();\n if (pointerTypeRef.current !== \"mouse\") {\n handleOpen(event);\n }\n }),\n onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n handleOpen(event);\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === \" \") return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== void 0;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n const showPlaceholder = shouldShowPlaceholder(context.value);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...valueProps,\n asChild: showPlaceholder ? false : valueProps.asChild,\n ref: composedRefs,\n style: { pointerEvents: \"none\" },\n children: /* @__PURE__ */ jsx(React.Fragment, { children: showPlaceholder ? placeholder : children }, showPlaceholder ? \"placeholder\" : \"value\")\n }\n );\n }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar [PortalProvider, usePortalContext] = createSelectContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar SelectPortal = (props) => {\n const { __scopeSelect, forceMount, ...portalProps } = props;\n return /* @__PURE__ */ jsx(PortalProvider, { scope: props.__scopeSelect, forceMount, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...portalProps }) });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeSelect);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState();\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => present ? /* @__PURE__ */ jsx(SelectContentImpl, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(SelectContentFragment, { ...contentProps, fragment }) });\n }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar SelectContentFragment = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, children, fragment } = props;\n if (!fragment) return null;\n return ReactDOM.createPortal(\n /* @__PURE__ */ jsx(SelectContentProvider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { ref: forwardedRef, children }) }) }),\n fragment\n );\n});\nSelectContentFragment.displayName = \"SelectContentFragment\";\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar Slot = createSlot(\"SelectContent.RemoveScroll\");\nvar SelectContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect } = props;\n const {\n position = \"item-aligned\",\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, setContent);\n const [selectedItem, setSelectedItem] = React.useState(null);\n const [selectedItemText, setSelectedItemText] = React.useState(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n useFocusGuards();\n const focusFirst = React.useCallback(\n (candidates) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: \"nearest\" });\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n };\n };\n const handlePointerUp = (event) => {\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!event.composedPath().includes(content)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n }\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener(\"blur\", close);\n window.addEventListener(\"resize\", close);\n return () => {\n window.removeEventListener(\"blur\", close);\n window.removeEventListener(\"resize\", close);\n };\n }, [onOpenChange]);\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n setTimeout(() => nextItem.ref.current?.focus());\n }\n });\n const itemRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n const popperContentProps = SelectPosition === SelectPopperPosition ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions\n } : {};\n return /* @__PURE__ */ jsx(\n SelectContentProvider,\n {\n scope: __scopeSelect,\n content,\n viewport,\n onViewportChange: setViewport,\n itemRefCallback,\n selectedItem,\n onItemLeave: handleItemLeave,\n itemTextRefCallback,\n focusSelectedItem,\n selectedItemText,\n position,\n isPositioned,\n searchRef,\n children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: context.open,\n onMountAutoFocus: (event) => {\n event.preventDefault();\n },\n onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n }),\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: true,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n SelectPosition,\n {\n role: \"listbox\",\n id: context.contentId,\n \"data-state\": context.open ? \"open\" : \"closed\",\n dir: context.dir,\n onContextMenu: (event) => event.preventDefault(),\n ...contentProps,\n ...popperContentProps,\n onPlaced: () => setIsPositioned(true),\n ref: composedRefs,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current);\n if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, setContent);\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n const triggerRect = context.trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n if (context.dir !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [\n CONTENT_MARGIN,\n // Prevents the content from going off the starting edge of the\n // viewport. It may still go off the ending edge, but this can be\n // controlled by the user since they may want to manage overflow in a\n // specific way.\n // https://github.com/radix-ui/primitives/issues/2049\n Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.left = clampedLeft + \"px\";\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.right = clampedRight + \"px\";\n }\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n contentWrapper.style.bottom = \"0px\";\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + \"px\";\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n contentWrapper.style.top = \"0px\";\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + \"px\";\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + \"px\";\n contentWrapper.style.maxHeight = availableHeight + \"px\";\n onPlaced?.();\n requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced\n ]);\n useLayoutEffect(() => position(), [position]);\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n const handleScrollButtonChange = React.useCallback(\n (node) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n return /* @__PURE__ */ jsx(\n SelectViewportProvider,\n {\n scope: __scopeSelect,\n contentWrapper,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange,\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: setContentWrapper,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex\n },\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...popperProps,\n ref: composedRefs,\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\",\n ...popperProps.style\n }\n }\n )\n }\n )\n }\n );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeSelect,\n align = \"start\",\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...popperProps,\n ref: forwardedRef,\n align,\n collisionPadding,\n style: {\n // Ensure border-box for floating-ui calculations\n boxSizing: \"border-box\",\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return /* @__PURE__ */ jsxs(Fragment2, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-select-viewport\": \"\",\n role: \"presentation\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n // Viewport should only be scrollable in the vertical direction.\n // This won't work in vertical writing modes, so we'll need to\n // revisit this if/when that is supported\n // https://developer.chrome.com/blog/vertical-form-controls\n overflow: \"hidden auto\",\n ...viewportProps.style\n },\n onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.style.height = clampedNextHeight + \"px\";\n if (contentWrapper.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })\n }\n ) })\n ] });\n }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n const [isFocused, setIsFocused] = React.useState(false);\n const handleItemRefCallback = useCallbackRef(\n (node) => contentContext.itemRefCallback?.(node, value, disabled)\n );\n const composedRefs = useComposedRefs(forwardedRef, handleItemRefCallback);\n const textId = useId();\n const pointerTypeRef = React.useRef(\"touch\");\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n }, []),\n children: /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textValue,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"option\",\n \"aria-labelledby\": textId,\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-selected\": isSelected && isFocused,\n \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : -1,\n ...itemProps,\n ref: composedRefs,\n onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n onClick: composeEventHandlers(itemProps.onClick, () => {\n if (pointerTypeRef.current !== \"mouse\") handleSelect();\n }),\n onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n if (pointerTypeRef.current === \"mouse\") handleSelect();\n }),\n onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n }),\n onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n pointerTypeRef.current = event.pointerType;\n if (disabled) {\n contentContext.onItemLeave?.();\n } else if (pointerTypeRef.current === \"mouse\") {\n event.currentTarget.focus({ preventScroll: true });\n }\n }),\n onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n }),\n onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== \"\";\n if (isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n if (event.key === \" \") event.preventDefault();\n })\n }\n )\n }\n )\n }\n );\n }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState(null);\n const handleItemTextRefCallback = useCallbackRef(\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n const composedRefs = useComposedRefs(\n forwardedRef,\n setItemTextNode,\n itemContext.onItemTextChange,\n handleItemTextRefCallback\n );\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n [itemContext.disabled, itemContext.value, textContent]\n );\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n return /* @__PURE__ */ jsxs(Fragment2, { children: [\n /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren && !shouldShowPlaceholder(context.value) ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n ] });\n }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const canScrollUp2 = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollUp ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollDown ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n const autoScrollTimerRef = React.useRef(null);\n const getItems = useCollection(__scopeSelect);\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n }, [getItems]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n ...scrollIndicatorProps,\n ref: forwardedRef,\n style: { flexShrink: 0, ...scrollIndicatorProps.style },\n onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })\n }\n );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n }\n);\nSelectArrow.displayName = ARROW_NAME;\nvar BUBBLE_INPUT_NAME = \"SelectBubbleInput\";\nvar SelectBubbleInput = React.forwardRef(\n ({ __scopeSelect, ...props }, forwardedRef) => {\n const context = useSelectContext(BUBBLE_INPUT_NAME, __scopeSelect);\n const { value, onValueChange, required, disabled, name, autoComplete, form } = context;\n const { nativeOptions, nativeSelectKey } = context;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const selectValue = value ?? \"\";\n const prevValue = usePrevious(selectValue);\n const hasEmptyValueOption = Array.from(nativeOptions).some(\n (option) => (option.props.value ?? \"\") === \"\"\n );\n React.useEffect(() => {\n const select = ref.current;\n if (!select) return;\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (prevValue !== selectValue && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(select, selectValue);\n select.dispatchEvent(event);\n }\n }, [prevValue, selectValue]);\n return /* @__PURE__ */ jsxs(\n Primitive.select,\n {\n \"aria-hidden\": true,\n required,\n tabIndex: -1,\n name,\n autoComplete,\n disabled,\n form,\n onChange: (event) => onValueChange(event.target.value),\n ...props,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },\n ref: composedRefs,\n defaultValue: selectValue,\n children: [\n shouldShowPlaceholder(value) && !hasEmptyValueOption ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n Array.from(nativeOptions)\n ]\n },\n nativeSelectKey\n );\n }\n);\nSelectBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction shouldShowPlaceholder(value) {\n return value === \"\" || value === void 0;\n}\nfunction useTypeaheadSearch(onSearchChange) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef(\"\");\n const timerRef = React.useRef(0);\n const handleTypeaheadSearch = React.useCallback(\n (key) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n },\n [handleSearchChange]\n );\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = \"\";\n window.clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find(\n (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nexport {\n SelectArrow as Arrow,\n SelectContent as Content,\n SelectGroup as Group,\n SelectIcon as Icon,\n SelectItem as Item,\n SelectItemIndicator as ItemIndicator,\n SelectItemText as ItemText,\n SelectLabel as Label,\n SelectPortal as Portal,\n Select as Root,\n SelectScrollDownButton as ScrollDownButton,\n SelectScrollUpButton as ScrollUpButton,\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n SelectSeparator as Separator,\n SelectTrigger as Trigger,\n SelectValue as Value,\n SelectViewport as Viewport,\n createSelectScope,\n SelectBubbleInput as unstable_BubbleInput,\n SelectProvider as unstable_Provider,\n SelectBubbleInput as unstable_SelectBubbleInput,\n SelectProvider as unstable_SelectProvider\n};\n//# sourceMappingURL=index.mjs.map\n","import { ArrowDown01Icon, CheckIcon } from \"@hugeicons/core-free-icons\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { StudioIcon } from \"./icon\";\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectValue = SelectPrimitive.Value;\n\nexport function SelectTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger>) {\n return (\n <SelectPrimitive.Trigger\n className={cn(\n \"flex h-9 w-full items-center justify-between rounded-lg border border-input bg-card/90 px-3 text-sm text-foreground outline-none transition duration-200 hover:border-muted-foreground/45 focus:border-muted-foreground/60 focus:ring-2 focus:ring-muted-foreground/20 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <StudioIcon icon={ArrowDown01Icon} className=\"h-4 w-4 opacity-60\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nexport function SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n position={position}\n className={cn(\n \"z-50 max-h-80 min-w-[8rem] overflow-hidden rounded-xl border border-border/90 bg-popover/98 text-popover-foreground shadow-xl shadow-black/45 backdrop-blur\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.Viewport className=\"p-1\">{children}</SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nexport function SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n className={cn(\n \"relative flex min-h-8 cursor-default select-none items-center rounded-lg py-1.5 pl-8 pr-2 text-sm outline-none transition data-[disabled]:pointer-events-none data-[highlighted]:bg-muted/65 data-[highlighted]:text-foreground data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <StudioIcon icon={CheckIcon} className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n","import type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function StudioPageShell({ className, ...props }: React.ComponentProps<\"section\">) {\n return (\n <section\n className={cn(\n \"grid h-full min-h-0 min-w-0 max-h-full max-w-full overflow-hidden bg-background/45\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function StudioSurface({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"min-h-0 min-w-0 overflow-hidden rounded-2xl border border-border/80 bg-card/70\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function StudioSection({ className, ...props }: React.ComponentProps<\"section\">) {\n return (\n <section\n className={cn(\n \"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function StudioMetric(props: { label: string; value: React.ReactNode; className?: string }) {\n return (\n <div\n className={cn(\n \"grid gap-1 rounded-xl border border-border/80 bg-card/45 p-4\",\n props.className,\n )}\n >\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"text-lg font-semibold tabular-nums text-foreground\">{props.value}</span>\n </div>\n );\n}\n\nexport function StudioEmptyState(props: { title: string; text: string; className?: string }) {\n return (\n <div\n className={cn(\n \"grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center\",\n props.className,\n )}\n >\n <div className=\"grid max-w-md gap-2\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">{props.title}</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">{props.text}</p>\n </div>\n </div>\n );\n}\n\nexport function StudioStatusBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"inline-flex items-center rounded-lg border border-border/80 bg-muted/55 px-2 py-1 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function StudioTabs({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"grid gap-1 rounded-xl border border-border/80 bg-background p-1\", className)}\n {...props}\n />\n );\n}\n","import type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n className={cn(\n \"min-h-9 w-full resize-none rounded-lg border border-input bg-card/90 px-3 py-2.5 leading-6 text-foreground outline-none transition duration-200 placeholder:text-muted-foreground/65 focus:border-muted-foreground/60 focus:ring-2 focus:ring-muted-foreground/20\",\n className,\n )}\n {...props}\n />\n );\n}\n","import type { StudioSessionLogEntry, StudioTraceSummary } from \"../../../../types\";\nimport { isRecord } from \"../shared/object\";\nimport type { TranscriptEntry } from \"../shared/types\";\n\nexport type ResponseUsageMetrics = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n cacheCreationInputTokens?: number;\n};\n\nexport type AssistantResponseMetrics = {\n durationMs?: number;\n usage?: ResponseUsageMetrics;\n};\n\nexport function assistantResponseMetricsByEntryId(props: {\n entries: TranscriptEntry[];\n traceSummaries: StudioTraceSummary[];\n logs: StudioSessionLogEntry[];\n}): Map<number, AssistantResponseMetrics> {\n const byEntryId = new Map<number, AssistantResponseMetrics>();\n const traceMetrics = new Map(\n props.traceSummaries\n .map((trace): [string, AssistantResponseMetrics] | undefined => {\n const metrics = metricsFromTrace(trace);\n return metrics === undefined ? undefined : [trace.id, metrics];\n })\n .filter((item): item is [string, AssistantResponseMetrics] => item !== undefined),\n );\n const completedRunMetrics = props.logs\n .filter((log) => log.category === \"run\" && log.event === \"run.completed\")\n .sort((left, right) => left.sequence - right.sequence)\n .map(metricsFromCompletedRunLog);\n\n let completedRunIndex = 0;\n for (const entry of props.entries) {\n if (!isCompletedAssistantMessage(entry)) {\n continue;\n }\n\n const fallbackMetrics = completedRunMetrics[completedRunIndex];\n completedRunIndex += 1;\n const metrics =\n entry.traceId === undefined\n ? fallbackMetrics\n : (traceMetrics.get(entry.traceId) ?? fallbackMetrics);\n if (metrics !== undefined) {\n byEntryId.set(entry.entryId, metrics);\n }\n }\n\n return byEntryId;\n}\n\nfunction isCompletedAssistantMessage(\n entry: TranscriptEntry,\n): entry is Extract<TranscriptEntry, { kind: \"message\"; role: \"assistant\" }> {\n return (\n entry.kind === \"message\" &&\n entry.role === \"assistant\" &&\n entry.text.trim().length > 0 &&\n (!(\"tone\" in entry) || entry.tone !== \"pending\")\n );\n}\n\nfunction metricsFromTrace(trace: StudioTraceSummary): AssistantResponseMetrics | undefined {\n const durationMs = numericValue(trace.durationMs);\n const usage = usageMetrics(trace.usage);\n return definedMetrics({\n ...(durationMs === undefined ? {} : { durationMs }),\n ...(usage === undefined ? {} : { usage }),\n });\n}\n\nfunction metricsFromCompletedRunLog(\n log: StudioSessionLogEntry,\n): AssistantResponseMetrics | undefined {\n const metadata = log.metadata;\n if (!isRecord(metadata)) {\n return undefined;\n }\n const durationMs = numericValue(metadata.durationMs);\n const usage = usageMetrics(metadata.usage);\n return definedMetrics({\n ...(durationMs === undefined ? {} : { durationMs }),\n ...(usage === undefined ? {} : { usage }),\n });\n}\n\nfunction usageMetrics(value: unknown): ResponseUsageMetrics | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n const inputTokens = numericValue(value.inputTokens);\n const outputTokens = numericValue(value.outputTokens);\n const totalTokens =\n numericValue(value.totalTokens) ??\n (inputTokens === undefined || outputTokens === undefined\n ? undefined\n : inputTokens + outputTokens);\n const usage: ResponseUsageMetrics = {\n ...(inputTokens === undefined ? {} : { inputTokens }),\n ...(outputTokens === undefined ? {} : { outputTokens }),\n ...(totalTokens === undefined ? {} : { totalTokens }),\n ...definedNumberField(\"cachedInputTokens\", value.cachedInputTokens),\n ...definedNumberField(\"cacheCreationInputTokens\", value.cacheCreationInputTokens),\n };\n return Object.keys(usage).length === 0 ? undefined : usage;\n}\n\nfunction definedNumberField<Key extends keyof ResponseUsageMetrics>(\n key: Key,\n value: unknown,\n): Pick<ResponseUsageMetrics, Key> | Record<string, never> {\n const numberValue = numericValue(value);\n return numberValue === undefined\n ? {}\n : ({ [key]: numberValue } as Pick<ResponseUsageMetrics, Key>);\n}\n\nfunction definedMetrics(metrics: AssistantResponseMetrics): AssistantResponseMetrics | undefined {\n return metrics.durationMs === undefined && metrics.usage === undefined ? undefined : metrics;\n}\n\nfunction numericValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n","import {\n ArchiveIcon,\n ArrowUp02Icon,\n AttachmentIcon,\n Cancel01Icon,\n ChatIcon,\n} from \"@hugeicons/core-free-icons\";\nimport {\n type ChangeEvent,\n type KeyboardEvent,\n lazy,\n type RefObject,\n Suspense,\n useMemo,\n} from \"react\";\nimport type {\n StudioConfig,\n StudioModelSummary,\n StudioSessionLogEntry,\n StudioSessionSummary,\n StudioTraceSummary,\n} from \"../../../../types\";\nimport {\n modelSelectLabel,\n type PromptAttachment,\n supportedAttachmentTypes,\n} from \"../../app-helpers\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport { StudioPageShell } from \"../../components/ui/studio\";\nimport { Textarea } from \"../../components/ui/textarea\";\nimport { cn } from \"../../lib/utils\";\nimport type { RunState, TranscriptEntry } from \"../shared/types\";\nimport { assistantResponseMetricsByEntryId } from \"./response-metrics\";\n\nconst TranscriptItem = lazy(() =>\n import(\"./transcript-item\").then((module) => ({\n default: module.TranscriptItem,\n })),\n);\n\nexport function PlaygroundPage(props: {\n agents: StudioConfig[\"agents\"];\n allSessions: StudioSessionSummary[];\n answeringQuestions: Set<string>;\n attachments: PromptAttachment[];\n decidingApprovals: Set<string>;\n hasMessages: boolean;\n messages: TranscriptEntry[];\n prompt: string;\n runState: RunState;\n selectedAgent: StudioConfig[\"agents\"][number] | undefined;\n selectedAgentId: string;\n selectedAgentModels: StudioModelSummary[];\n selectedAgentQuickPrompts: string[];\n selectedModelRef: string;\n selectedSessionId: string;\n sessionLogs: StudioSessionLogEntry[];\n sessionTraceSummaries: StudioTraceSummary[];\n attachmentInputRef: RefObject<HTMLInputElement | null>;\n promptRef: RefObject<HTMLTextAreaElement | null>;\n transcriptScrollerRef: RefObject<HTMLElement | null>;\n onAddPromptAttachments: (event: ChangeEvent<HTMLInputElement>) => void;\n onApprovalDecision: (approvalId: string, approved: boolean) => void;\n onDeleteSession: (session: StudioSessionSummary) => void;\n onLoadSession: (sessionId: string) => void;\n onOpenTrace: (traceId: string) => void;\n onPromptChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n onPromptKeyDown: (event: KeyboardEvent<HTMLTextAreaElement>) => void;\n onQuestionAnswer: (\n questionId: string,\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) => void;\n onRemovePromptAttachment: (id: string) => void;\n onRunPrompt: (prompt: string) => void;\n onSelectAgent: (agentId: string) => void;\n onSelectModel: (modelRef: string) => void;\n onTranscriptScroll: () => void;\n}) {\n const responseMetricsByEntryId = useMemo(\n () =>\n assistantResponseMetricsByEntryId({\n entries: props.messages,\n traceSummaries: props.sessionTraceSummaries,\n logs: props.sessionLogs,\n }),\n [props.messages, props.sessionLogs, props.sessionTraceSummaries],\n );\n\n return (\n <StudioPageShell className=\"grid-cols-[minmax(0,1fr)_minmax(0,460px)] max-xl:grid-cols-1\">\n <div className=\"grid min-h-0 min-w-0\">\n <div className=\"grid h-full min-h-0 min-w-0 grid-rows-[minmax(0,1fr)_auto]\">\n <section\n className=\"min-h-0 overflow-y-auto overflow-x-hidden px-4 py-4 [scrollbar-gutter:stable]\"\n ref={props.transcriptScrollerRef}\n onScroll={props.onTranscriptScroll}\n >\n <div className=\"mx-auto grid min-h-full w-full max-w-235 content-start items-start gap-6 pb-8\">\n {!props.hasMessages ? (\n <div className=\"grid min-h-96 place-items-center text-sm font-medium text-muted-foreground\">\n <div className=\"grid max-w-xl gap-4 text-center\">\n <div className=\"mx-auto h-px w-28 bg-muted/55\" />\n <h1 className=\"m-0 text-4xl font-semibold leading-tight text-foreground text-balance\">\n What should this agent work on?\n </h1>\n <p className=\"m-0 text-base leading-7 text-muted-foreground text-pretty\">\n Choose a prompt below or write a task. Studio will stream the response, tool\n calls, approvals, and trace data here.\n </p>\n </div>\n </div>\n ) : null}\n <Suspense fallback={null}>\n {props.messages.map((message) => (\n <TranscriptItem\n key={message.entryId}\n entry={message}\n metrics={responseMetricsByEntryId.get(message.entryId)}\n decidingApprovals={props.decidingApprovals}\n answeringQuestions={props.answeringQuestions}\n onApprovalDecision={props.onApprovalDecision}\n onQuestionAnswer={props.onQuestionAnswer}\n onOpenTrace={props.onOpenTrace}\n />\n ))}\n </Suspense>\n </div>\n </section>\n <form\n className=\"grid gap-3 bg-gradient-to-t from-card via-card/95 to-card/0 px-4 pb-4 pt-2\"\n onSubmit={(event) => {\n event.preventDefault();\n props.onRunPrompt(props.prompt);\n }}\n >\n {props.hasMessages || props.selectedAgentQuickPrompts.length === 0 ? null : (\n <div className=\"mx-auto grid w-full max-w-235 grid-cols-3 gap-2 max-md:grid-cols-1\">\n {props.selectedAgentQuickPrompts.map((quickPrompt) => (\n <Button\n className=\"h-auto min-h-16 justify-start whitespace-normal rounded-lg border border-border/80 bg-card/85 px-3 py-2.5 text-left text-sm font-medium leading-5 text-foreground shadow-sm hover:border-border/80 hover:bg-muted/45 hover:text-foreground\"\n type=\"button\"\n variant=\"ghost\"\n disabled={props.runState === \"running\" || props.selectedAgentId.length === 0}\n onClick={() => props.onRunPrompt(quickPrompt)}\n key={quickPrompt}\n >\n <span className=\"min-w-0 whitespace-normal wrap-break-words\">\n {quickPrompt}\n </span>\n </Button>\n ))}\n </div>\n )}\n <div className=\"mx-auto grid w-full max-w-235 gap-2 rounded-xl border border-border/80 bg-card/95 p-2.5 backdrop-blur\">\n <Textarea\n className=\"min-h-16 min-w-0 resize-none rounded-lg border-0 bg-transparent px-3 py-3 text-base leading-7 text-foreground shadow-none outline-none ring-0 placeholder:text-muted-foreground/70 focus:border-transparent focus:ring-0\"\n ref={props.promptRef}\n rows={1}\n value={props.prompt}\n onChange={props.onPromptChange}\n onKeyDown={props.onPromptKeyDown}\n placeholder=\"Ask anything...\"\n />\n {props.attachments.length === 0 ? null : (\n <div className=\"flex min-w-0 flex-wrap gap-1.5 px-2\">\n {props.attachments.map((attachment) => (\n <span\n className=\"inline-flex max-w-full items-center gap-1.5 rounded-lg border border-border/80 bg-muted/55 px-2 py-1 text-xs font-medium text-muted-foreground\"\n key={attachment.id}\n >\n <span className=\"min-w-0 truncate\">\n {attachment.kind === \"image\" ? \"Image\" : \"Doc\"} / {attachment.name}\n </span>\n <Button\n aria-label={`Remove ${attachment.name}`}\n className=\"h-5 min-h-5 w-5 rounded-md border-0 bg-transparent p-0 text-muted-foreground shadow-none hover:bg-accent hover:text-foreground [&_svg]:h-3 [&_svg]:w-3\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onRemovePromptAttachment(attachment.id)}\n >\n <StudioIcon icon={Cancel01Icon} aria-hidden=\"true\" />\n </Button>\n </span>\n ))}\n </div>\n )}\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <input\n ref={props.attachmentInputRef}\n className=\"hidden\"\n type=\"file\"\n multiple\n accept={supportedAttachmentTypes}\n onChange={props.onAddPromptAttachments}\n />\n <Button\n aria-label=\"Attach image or document\"\n className=\"h-8 min-h-8 w-8 border-0 bg-transparent p-0 text-muted-foreground shadow-none hover:bg-accent hover:text-accent-foreground\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n disabled={props.runState === \"running\"}\n onClick={() => props.attachmentInputRef.current?.click()}\n >\n <StudioIcon icon={AttachmentIcon} aria-hidden=\"true\" />\n </Button>\n </div>\n <div className=\"flex min-w-0 items-center gap-2\">\n {props.selectedAgentModels.length === 0 ? null : (\n <Select\n value={props.selectedModelRef}\n onValueChange={props.onSelectModel}\n disabled={props.runState === \"running\"}\n >\n <SelectTrigger\n aria-label=\"Select model\"\n className=\"flex h-8 min-h-8 w-auto max-w-44 gap-2 border-0 bg-transparent px-2 py-1 text-xs font-medium text-muted-foreground shadow-none hover:bg-accent hover:text-accent-foreground sm:max-w-72\"\n >\n <SelectValue placeholder=\"Model\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {props.selectedAgentModels.map((model) => (\n <SelectItem value={model.ref} key={model.ref}>\n {modelSelectLabel(model)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n {props.agents.length > 1 ? (\n <Select\n value={props.selectedAgent?.id ?? props.selectedAgentId}\n onValueChange={props.onSelectAgent}\n disabled={props.runState === \"running\"}\n >\n <SelectTrigger\n aria-label=\"Select agent\"\n className=\"flex h-8 min-h-8 w-auto max-w-64 gap-2 border-0 bg-transparent px-2 py-1 text-xs font-medium text-muted-foreground shadow-none hover:bg-accent hover:text-accent-foreground\"\n >\n <SelectValue placeholder=\"Agent\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {props.agents.map((agent) => (\n <SelectItem value={agent.id} key={agent.id}>\n {agent.name ?? agent.id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n <Button\n aria-label={props.runState === \"running\" ? \"Running\" : \"Send message\"}\n className=\"h-9 min-h-9 w-9 rounded-full border-white bg-white text-black hover:bg-white/90\"\n size=\"icon\"\n type=\"submit\"\n disabled={props.runState === \"running\" || props.selectedAgentId.length === 0}\n >\n <StudioIcon icon={ArrowUp02Icon} />\n </Button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n <PlaygroundSessionsPanel\n sessions={props.allSessions}\n selectedSessionId={props.selectedSessionId}\n runState={props.runState}\n onDeleteSession={props.onDeleteSession}\n onLoadSession={props.onLoadSession}\n />\n </StudioPageShell>\n );\n}\n\nfunction PlaygroundSessionsPanel(props: {\n sessions: StudioSessionSummary[];\n selectedSessionId: string;\n runState: RunState;\n onDeleteSession: (session: StudioSessionSummary) => void;\n onLoadSession: (sessionId: string) => void;\n}) {\n return (\n <aside\n className=\"grid h-full min-h-0 min-w-0 max-h-full overflow-hidden border-l border-sidebar-border bg-sidebar text-sidebar-foreground max-xl:hidden\"\n aria-label=\"Sessions\"\n >\n <nav\n className=\"grid min-h-0 content-start gap-0.5 overflow-auto px-3 py-3\"\n aria-label=\"Sessions\"\n >\n {props.sessions.map((session) => (\n <PlaygroundSessionRow\n session={session}\n active={session.id === props.selectedSessionId}\n disabled={props.runState === \"running\"}\n onDeleteSession={props.onDeleteSession}\n onLoadSession={props.onLoadSession}\n key={session.id}\n />\n ))}\n </nav>\n </aside>\n );\n}\n\nfunction PlaygroundSessionRow(props: {\n session: StudioSessionSummary;\n active: boolean;\n disabled: boolean;\n onDeleteSession: (session: StudioSessionSummary) => void;\n onLoadSession: (sessionId: string) => void;\n}) {\n const title = props.session.title ?? \"Untitled chat\";\n return (\n <div className=\"group relative min-w-0\">\n <Button\n className={cn(\n \"studio-sidebar-nav-button h-9 min-h-9 w-full justify-start gap-3 rounded-lg bg-transparent px-2.5 py-0.5 pr-9 text-base font-medium text-sidebar-foreground/62 shadow-none transition duration-200 hover:text-sidebar-foreground active:translate-y-px [&_svg]:h-[17px] [&_svg]:w-[17px]\",\n props.active && \"studio-sidebar-nav-button-active text-sidebar-accent-foreground\",\n )}\n type=\"button\"\n variant=\"ghost\"\n disabled={props.disabled}\n onClick={() => props.onLoadSession(props.session.id)}\n >\n <StudioIcon icon={ChatIcon} aria-hidden=\"true\" />\n <span className=\"min-w-0 flex-1 truncate text-left\">{title}</span>\n </Button>\n <Button\n aria-label={`Delete ${title}`}\n className=\"absolute right-1 top-1/2 hidden h-7 min-h-7 w-7 -translate-y-1/2 rounded-lg border-0 bg-transparent p-0 text-muted-foreground opacity-70 shadow-none hover:bg-sidebar-accent hover:text-destructive hover:opacity-100 group-hover:inline-flex group-focus-within:inline-flex [&_svg]:h-4 [&_svg]:w-4\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n disabled={props.disabled}\n onClick={() => props.onDeleteSession(props.session)}\n >\n <StudioIcon icon={ArchiveIcon} aria-hidden=\"true\" />\n </Button>\n </div>\n );\n}\n","import { useParams } from \"@tanstack/react-router\";\nimport { useEffect, useRef } from \"react\";\nimport { PlaygroundPage } from \"../modules/playground/playground-page\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function PlaygroundRoute() {\n const studio = useActivatedRoute(\"playground\");\n const params = useParams({ strict: false }) as { sessionId?: string };\n const sessionId = params.sessionId;\n const handledSessionIdRef = useRef<string | undefined | null>(null);\n\n useEffect(() => {\n if (handledSessionIdRef.current === sessionId) {\n return;\n }\n if (!studio.pageEnabled(\"playground\")) {\n return;\n }\n if (studio.runState === \"running\") {\n handledSessionIdRef.current = sessionId;\n return;\n }\n if (sessionId === undefined) {\n handledSessionIdRef.current = sessionId;\n studio.startNewChat({ updatePath: false });\n return;\n }\n if (!studio.sessionsEnabled) {\n return;\n }\n handledSessionIdRef.current = sessionId;\n if (sessionId !== studio.sessions.selectedSessionId) {\n void studio.sessions.loadSession(sessionId, { updatePath: false });\n }\n }, [sessionId, studio]);\n\n return (\n <PlaygroundPage\n agents={studio.agents}\n allSessions={studio.sessions.allSessions}\n answeringQuestions={studio.answeringQuestions}\n attachments={studio.attachments}\n decidingApprovals={studio.decidingApprovals}\n hasMessages={studio.hasMessages}\n messages={studio.messages}\n prompt={studio.prompt}\n runState={studio.runState}\n selectedAgent={studio.selectedAgent}\n selectedAgentId={studio.selectedAgentId}\n selectedAgentModels={studio.selectedAgentModels}\n selectedAgentQuickPrompts={studio.selectedAgentQuickPrompts}\n selectedModelRef={studio.selectedModelRef}\n selectedSessionId={studio.sessions.selectedSessionId}\n sessionLogs={studio.sessions.sessionLogs}\n sessionTraceSummaries={studio.sessionTraceSummaries}\n attachmentInputRef={studio.attachmentInputRef}\n promptRef={studio.promptRef}\n transcriptScrollerRef={studio.transcriptScrollerRef}\n onAddPromptAttachments={studio.addPromptAttachments}\n onApprovalDecision={studio.decideToolApproval}\n onDeleteSession={studio.setDeleteCandidate}\n onLoadSession={(sessionId) => void studio.sessions.loadSession(sessionId)}\n onOpenTrace={studio.traces.selectTrace}\n onPromptChange={studio.updatePrompt}\n onPromptKeyDown={studio.handlePromptKeyDown}\n onQuestionAnswer={studio.answerToolQuestion}\n onRemovePromptAttachment={studio.removePromptAttachment}\n onRunPrompt={studio.runPrompt}\n onSelectAgent={studio.selectPlaygroundAgent}\n onSelectModel={studio.setSelectedModelRef}\n onTranscriptScroll={studio.updateTranscriptStickiness}\n />\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading, SessionsPage } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function SessionsRoute() {\n const studio = useActivatedRoute(\"sessions\");\n\n return (\n <Suspense fallback={<PageLoading />}>\n <SessionsPage\n agents={studio.agents}\n sessions={studio.sessions.allSessions}\n sessionsEnabled={studio.sessionsEnabled}\n sessionLoadState={studio.sessions.sessionLoadState}\n selectedSessionId={studio.sessions.selectedSessionId}\n onOpenSession={(sessionId) => void studio.sessions.loadSession(sessionId)}\n onViewSessionTracing={(sessionId) => void studio.traces.showSessionTraces(sessionId)}\n onDeleteSession={studio.setDeleteCandidate}\n />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading, StatusPage } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function StatusRoute() {\n const studio = useActivatedRoute(\"status\");\n return (\n <Suspense fallback={<PageLoading />}>\n <StatusPage enabled={studio.statusEnabled} />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { ToolsContainer } from \"../modules/inspectors/inspectors-containers\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function ToolsRoute() {\n const studio = useActivatedRoute(\"tools\");\n return (\n <Suspense fallback={<PageLoading />}>\n <ToolsContainer\n active\n agents={studio.agents}\n enabled={studio.toolsEnabled}\n selectedAgentId={studio.selectedAgent?.id || studio.selectedAgentId}\n onError={studio.setError}\n />\n </Suspense>\n );\n}\n","import { useParams } from \"@tanstack/react-router\";\nimport { Suspense, useEffect, useRef } from \"react\";\nimport { PageLoading, TraceBrowser } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function TracingRoute() {\n const studio = useActivatedRoute(\"tracing\");\n const params = useParams({ strict: false }) as {\n traceId?: string;\n sessionId?: string;\n };\n const handledTraceLocationRef = useRef(\"\");\n\n useEffect(() => {\n const locationKey =\n params.sessionId === undefined\n ? `trace:${params.traceId ?? \"\"}`\n : `session:${params.sessionId}`;\n if (handledTraceLocationRef.current === locationKey) {\n return;\n }\n if (!studio.pageEnabled(\"tracing\")) {\n return;\n }\n handledTraceLocationRef.current = locationKey;\n if (params.sessionId !== undefined) {\n void studio.traces.showSessionTraces(params.sessionId, { updatePath: false });\n return;\n }\n studio.traces.setTraceLocation(params.traceId ?? \"\", undefined);\n }, [params.sessionId, params.traceId, studio]);\n\n return (\n <Suspense fallback={<PageLoading />}>\n <TraceBrowser\n agents={studio.agents}\n traces={studio.traces.traces}\n tracesEnabled={studio.tracesEnabled}\n traceLoadState={studio.traces.traceLoadState}\n selectedTraceId={studio.traces.selectedTraceId}\n traceSessionDetailId={studio.traces.traceSessionDetailId}\n onRefresh={() => void studio.traces.loadTraces()}\n onSelectTrace={studio.traces.selectTrace}\n onShowSessionTraces={(sessionId) => void studio.traces.showSessionTraces(sessionId)}\n />\n </Suspense>\n );\n}\n","import { createRootRoute, createRoute, createRouter, Navigate } from \"@tanstack/react-router\";\nimport { StudioConsoleLayout } from \"./modules/shell/studio-console-layout\";\nimport { AgentsRoute } from \"./routes/agents-route\";\nimport { EvalsRoute } from \"./routes/evals-route\";\nimport { KnowledgeRoute } from \"./routes/knowledge-route\";\nimport { McpsRoute } from \"./routes/mcps-route\";\nimport { MemoryRoute } from \"./routes/memory-route\";\nimport { PipelinesRoute } from \"./routes/pipelines-route\";\nimport { PlaygroundRoute } from \"./routes/playground-route\";\nimport { SessionsRoute } from \"./routes/sessions-route\";\nimport { StatusRoute } from \"./routes/status-route\";\nimport { ToolsRoute } from \"./routes/tools-route\";\nimport { TracingRoute } from \"./routes/tracing-route\";\n\nconst rootRoute = createRootRoute({\n component: StudioConsoleLayout,\n});\n\nconst indexRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"/\",\n component: () => <Navigate to=\"/playground\" replace />,\n});\n\nconst playgroundRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"playground\",\n component: PlaygroundRoute,\n});\n\nconst playgroundSessionRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"playground/$sessionId\",\n component: PlaygroundRoute,\n});\n\nconst tracingRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"tracing\",\n component: TracingRoute,\n});\n\nconst tracingTraceRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"tracing/$traceId\",\n component: TracingRoute,\n});\n\nconst tracingSessionRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"tracing/sessions/$sessionId\",\n component: TracingRoute,\n});\n\nconst sessionsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"sessions\",\n component: SessionsRoute,\n});\n\nconst agentsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"agents\",\n component: AgentsRoute,\n});\n\nconst toolsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"tools\",\n component: ToolsRoute,\n});\n\nconst mcpsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"mcps\",\n component: McpsRoute,\n});\n\nconst pipelinesRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"pipelines\",\n component: PipelinesRoute,\n});\n\nconst evalsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"evals\",\n component: EvalsRoute,\n});\n\nconst knowledgeRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"knowledge\",\n component: KnowledgeRoute,\n});\n\nconst knowledgeTabRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"knowledge/$tab\",\n component: KnowledgeRoute,\n});\n\nconst memoryRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"memory\",\n component: MemoryRoute,\n});\n\nconst statusRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"status\",\n component: StatusRoute,\n});\n\nconst routeTree = rootRoute.addChildren([\n indexRoute,\n playgroundRoute,\n playgroundSessionRoute,\n tracingRoute,\n tracingTraceRoute,\n tracingSessionRoute,\n sessionsRoute,\n agentsRoute,\n toolsRoute,\n mcpsRoute,\n pipelinesRoute,\n evalsRoute,\n knowledgeRoute,\n knowledgeTabRoute,\n memoryRoute,\n statusRoute,\n]);\n\nexport const studioRouter = createRouter({\n routeTree,\n});\n\ndeclare module \"@tanstack/react-router\" {\n interface Register {\n router: typeof studioRouter;\n }\n}\n","import { RouterProvider } from \"@tanstack/react-router\";\nimport {\n type ChangeEvent,\n type KeyboardEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n StudioConfig,\n StudioSession,\n StudioSessionSummary,\n StudioTraceSummary,\n} from \"../../types\";\nimport {\n enrichTranscriptWithTraceIds,\n fileToAttachment,\n type PromptAttachment,\n sessionModelRef,\n} from \"./app-helpers\";\nimport { useStudioTheme } from \"./app-theme\";\nimport { useAgentModels } from \"./modules/agents/use-agent-models\";\nimport { usePlaygroundRun } from \"./modules/playground/use-playground-run\";\nimport { usePlaygroundTranscript } from \"./modules/playground/use-playground-transcript\";\nimport { useStudioSessions } from \"./modules/sessions/use-studio-sessions\";\nimport { errorMessage } from \"./modules/shared/format\";\nimport {\n fallbackActivePage,\n isActivePageEnabled,\n type StudioPageAvailability,\n} from \"./modules/shared/navigation\";\nimport { defaultKnowledgeTab } from \"./modules/shared/path\";\nimport {\n formValue,\n nextSequence,\n resetTranscriptSequence,\n resizeTextarea,\n setTranscriptSequence,\n} from \"./modules/shared/transcript\";\nimport type { ActivePage, KnowledgeTab, RunState } from \"./modules/shared/types\";\nimport { useTraces } from \"./modules/tracing/use-traces\";\nimport { StudioConsoleContext } from \"./studio-console-context\";\nimport { studioRouter } from \"./studio-router\";\n\nexport function StudioConsole() {\n const [config, setConfig] = useState<StudioConfig | undefined>();\n const [selectedAgentId, setSelectedAgentId] = useState(\"\");\n const transcript = usePlaygroundTranscript();\n const { messages, setMessages } = transcript;\n const [sessionTraceSummaries, setSessionTraceSummaries] = useState<StudioTraceSummary[]>([]);\n const [prompt, setPrompt] = useState(\"\");\n const [attachments, setAttachments] = useState<PromptAttachment[]>([]);\n const [activePage, setActivePage] = useState<ActivePage>(\"playground\");\n const { theme, toggleTheme } = useStudioTheme();\n const [knowledgeTab, setKnowledgeTab] = useState<KnowledgeTab>(defaultKnowledgeTab);\n const [deleteCandidate, setDeleteCandidate] = useState<StudioSessionSummary | undefined>();\n const [status, setStatus] = useState(\"Loading\");\n const [, setError] = useState(\"\");\n const [runState, setRunState] = useState<RunState>(\"idle\");\n const promptRef = useRef<HTMLTextAreaElement | null>(null);\n const attachmentInputRef = useRef<HTMLInputElement | null>(null);\n const transcriptScrollerRef = useRef<HTMLElement | null>(null);\n const transcriptStickToBottomRef = useRef(true);\n\n function updateTranscriptStickiness() {\n const node = transcriptScrollerRef.current;\n if (node === null) {\n return;\n }\n transcriptStickToBottomRef.current =\n node.scrollHeight - node.scrollTop - node.clientHeight < 80;\n }\n\n useEffect(() => {\n if (\n activePage !== \"playground\" ||\n messages.length === 0 ||\n !transcriptStickToBottomRef.current\n ) {\n return;\n }\n const frame = window.requestAnimationFrame(() => {\n const node = transcriptScrollerRef.current;\n if (node === null) {\n return;\n }\n node.scrollTop = node.scrollHeight;\n });\n return () => window.cancelAnimationFrame(frame);\n }, [activePage, messages]);\n\n const loadConfig = useCallback(async () => {\n setStatus(\"Loading\");\n setError(\"\");\n try {\n const response = await fetch(\"/config\");\n if (response.status === 401) {\n setStatus(\"Authentication required\");\n return;\n }\n if (!response.ok) {\n throw new Error(`Config failed with HTTP ${response.status}`);\n }\n\n const nextConfig = (await response.json()) as StudioConfig;\n setConfig(nextConfig);\n setSelectedAgentId((current) => current || nextConfig.agents[0]?.id || \"\");\n setStatus(\"Connected\");\n } catch (loadError) {\n setError(errorMessage(loadError));\n setStatus(\"Config error\");\n }\n }, []);\n\n useEffect(() => {\n void loadConfig();\n }, [loadConfig]);\n\n const sessionsEnabled = config?.capabilities.sessions?.enabled === true;\n const tracesEnabled = config?.capabilities.traces?.enabled === true;\n const knowledgeEnabled = config?.capabilities.knowledge?.enabled === true;\n const mcpsEnabled = config?.capabilities.mcps?.enabled === true;\n const toolsEnabled = config?.capabilities.tools?.enabled === true;\n const pipelinesEnabled = config?.capabilities.pipelines?.enabled === true;\n const evalsEnabled = config?.capabilities.evals?.enabled === true;\n const memoryEnabled = config?.capabilities.memory?.enabled === true;\n const statusEnabled = config?.capabilities.status?.enabled === true;\n const agents = config?.agents ?? [];\n const pipelines = config?.pipelines ?? [];\n const evals = config?.evals ?? [];\n const hasAgents = agents.length > 0;\n const navigateToTracing = useCallback(() => {\n setActivePage(\"tracing\");\n }, []);\n const navigateSessionPath = useCallback((sessionId: string | undefined) => {\n if (sessionId === undefined) {\n void studioRouter.navigate({ to: \"/playground\" });\n return;\n }\n void studioRouter.navigate({\n to: \"/playground/$sessionId\",\n params: { sessionId },\n });\n }, []);\n const navigateTraceIndex = useCallback(() => {\n void studioRouter.navigate({ to: \"/tracing\" });\n }, []);\n const navigateTracePath = useCallback((traceId: string) => {\n void studioRouter.navigate({\n to: \"/tracing/$traceId\",\n params: { traceId },\n });\n }, []);\n const navigateTraceSessionPath = useCallback((sessionId: string) => {\n void studioRouter.navigate({\n to: \"/tracing/sessions/$sessionId\",\n params: { sessionId },\n });\n }, []);\n const traces = useTraces({\n activePage,\n enabled: tracesEnabled,\n initialTraceId: \"\",\n initialTraceSessionId: undefined,\n onError: setError,\n onNavigateTracing: navigateToTracing,\n onOpenTrace: navigateTracePath,\n onOpenTraceIndex: navigateTraceIndex,\n onOpenTraceSession: navigateTraceSessionPath,\n });\n const pageAvailability: StudioPageAvailability = useMemo(\n () => ({\n hasAgents,\n sessionsEnabled,\n tracesEnabled,\n toolsEnabled,\n mcpsEnabled,\n pipelinesEnabled,\n evalsEnabled,\n memoryEnabled,\n statusEnabled,\n knowledgeEnabled,\n }),\n [\n hasAgents,\n sessionsEnabled,\n tracesEnabled,\n toolsEnabled,\n mcpsEnabled,\n pipelinesEnabled,\n evalsEnabled,\n memoryEnabled,\n statusEnabled,\n knowledgeEnabled,\n ],\n );\n const selectedAgent =\n agents.find((agent) => agent.id === selectedAgentId) ?? agents[0] ?? undefined;\n const selectedAgentModelId = selectedAgent?.id;\n const selectedAgentQuickPrompts = selectedAgent?.quickPrompts ?? [];\n const { selectedAgentModels, selectedModelRef, setSelectedModelRef } = useAgentModels({\n enabled: config?.models !== undefined,\n selectedAgentId: selectedAgentModelId,\n onError: setError,\n });\n const hasMessages = messages.length > 0;\n const handleSessionLoaded = useCallback(\n (\n session: StudioSession,\n traceSummaries: StudioTraceSummary[],\n options: { updatePath?: boolean },\n ) => {\n setTranscriptSequence(nextSequence(session.transcript));\n setSelectedAgentId(session.agentId);\n setSelectedModelRef(sessionModelRef(session));\n setSessionTraceSummaries(traceSummaries);\n setMessages(enrichTranscriptWithTraceIds(session.transcript, traceSummaries));\n setAttachments([]);\n if (options.updatePath !== false) {\n setActivePage(\"playground\");\n navigateSessionPath(session.id);\n }\n },\n [navigateSessionPath, setMessages, setSelectedModelRef],\n );\n const handleSessionDeleted = useCallback(\n (sessionId: string, wasSelected: boolean) => {\n traces.removeSessionTraces(sessionId);\n if (!wasSelected) {\n return;\n }\n resetTranscriptSequence();\n setMessages([]);\n setSessionTraceSummaries([]);\n setPrompt(\"\");\n setAttachments([]);\n if (activePage === \"playground\") {\n navigateSessionPath(undefined);\n }\n },\n [activePage, navigateSessionPath, setMessages, traces],\n );\n const sessions = useStudioSessions({\n activePage,\n currentAgentId: selectedAgent?.id ?? selectedAgentId,\n enabled: sessionsEnabled,\n loadSessionTraceSummaries: traces.loadSessionTraceSummaries,\n runState,\n selectedModelRef,\n onError: setError,\n onSessionCreated: navigateSessionPath,\n onSessionDeleted: handleSessionDeleted,\n onSessionLoaded: handleSessionLoaded,\n onStatus: setStatus,\n });\n\n const {\n answeringQuestions,\n decidingApprovals,\n answerToolQuestion,\n decideToolApproval,\n runPrompt,\n } = usePlaygroundRun({\n attachments,\n messages,\n promptRef,\n runState,\n selectedAgent,\n selectedAgentId,\n selectedModelRef,\n sessions,\n sessionsEnabled,\n traces,\n transcript,\n onActivePageChange: setActivePage,\n onAttachmentsChange: setAttachments,\n onBeforeRun: () => {\n transcriptStickToBottomRef.current = true;\n },\n onError: setError,\n onPromptChange: setPrompt,\n onRunStateChange: setRunState,\n onSessionTraceSummariesChange: setSessionTraceSummaries,\n onStatus: setStatus,\n });\n\n const startNewChat = useCallback(\n (options: { updatePath?: boolean } = {}) => {\n if (runState === \"running\") {\n return;\n }\n resetTranscriptSequence();\n sessions.clearSelectedSession();\n setMessages([]);\n setSessionTraceSummaries([]);\n setPrompt(\"\");\n setAttachments([]);\n setActivePage(\"playground\");\n setError(\"\");\n if (options.updatePath !== false) {\n navigateSessionPath(undefined);\n }\n requestAnimationFrame(() => resizeTextarea(promptRef.current));\n },\n [navigateSessionPath, runState, sessions, setMessages],\n );\n\n const selectPlaygroundAgent = useCallback(\n (agentId: string) => {\n if (runState === \"running\" || agentId === selectedAgentId) {\n return;\n }\n\n setSelectedAgentId(agentId);\n setSelectedModelRef(\"\");\n resetTranscriptSequence();\n sessions.clearSelectedSession();\n setMessages([]);\n setSessionTraceSummaries([]);\n setPrompt(\"\");\n setAttachments([]);\n setActivePage(\"playground\");\n setError(\"\");\n navigateSessionPath(undefined);\n requestAnimationFrame(() => resizeTextarea(promptRef.current));\n },\n [navigateSessionPath, runState, selectedAgentId, sessions, setMessages, setSelectedModelRef],\n );\n\n function updatePrompt(event: ChangeEvent<HTMLTextAreaElement>) {\n setPrompt(formValue(event));\n resizeTextarea(event.currentTarget);\n }\n\n async function addPromptAttachments(event: ChangeEvent<HTMLInputElement>) {\n const files = Array.from(event.currentTarget.files ?? []);\n event.currentTarget.value = \"\";\n if (files.length === 0) {\n return;\n }\n\n try {\n const nextAttachments = await Promise.all(files.map(fileToAttachment));\n setAttachments((current) => [...current, ...nextAttachments]);\n } catch (attachmentError) {\n setError(errorMessage(attachmentError));\n }\n }\n\n function removePromptAttachment(id: string) {\n setAttachments((current) => current.filter((attachment) => attachment.id !== id));\n }\n\n function handlePromptKeyDown(event: KeyboardEvent<HTMLTextAreaElement>) {\n if (event.key !== \"Enter\" || event.shiftKey || event.nativeEvent.isComposing) {\n return;\n }\n\n event.preventDefault();\n void runPrompt(prompt);\n }\n\n const pageEnabled = useCallback(\n (page: ActivePage) => isActivePageEnabled(page, pageAvailability),\n [pageAvailability],\n );\n\n const navigatePage = useCallback(\n (page: ActivePage) => {\n if (!isActivePageEnabled(page, pageAvailability)) {\n return;\n }\n\n setActivePage(page);\n if (page === \"tracing\") {\n traces.clearTraceSelection();\n void studioRouter.navigate({ to: \"/tracing\" });\n return;\n }\n if (page === \"knowledge\") {\n traces.clearTraceSelection();\n void studioRouter.navigate({\n to: \"/knowledge/$tab\",\n params: { tab: knowledgeTab },\n });\n return;\n }\n traces.clearTraceSelection();\n if (page === \"playground\" && sessions.selectedSessionId.length > 0) {\n navigateSessionPath(sessions.selectedSessionId);\n return;\n }\n void studioRouter.navigate({ to: `/${page}` });\n },\n [knowledgeTab, navigateSessionPath, pageAvailability, sessions.selectedSessionId, traces],\n );\n\n const navigateFallback = useCallback(\n (preferred: ActivePage) => {\n const nextPage = fallbackActivePage(preferred, pageAvailability);\n navigatePage(nextPage);\n },\n [navigatePage, pageAvailability],\n );\n\n function navigateKnowledgeTab(tab: KnowledgeTab) {\n setActivePage(\"knowledge\");\n setKnowledgeTab(tab);\n traces.clearTraceSelection();\n void studioRouter.navigate({\n to: \"/knowledge/$tab\",\n params: { tab },\n });\n }\n\n const activateRoute = useCallback(\n (page: ActivePage) => {\n if (!isActivePageEnabled(page, pageAvailability)) {\n navigateFallback(page);\n return;\n }\n setActivePage(page);\n if (page !== \"tracing\") {\n traces.clearTraceSelection();\n }\n },\n [navigateFallback, pageAvailability, traces],\n );\n\n const contextValue = {\n activePage,\n agents,\n answeringQuestions,\n attachments,\n decidingApprovals,\n deleteCandidate,\n evals,\n evalsEnabled,\n hasAgents,\n hasMessages,\n knowledgeEnabled,\n knowledgeTab,\n mcpsEnabled,\n memoryEnabled,\n messages,\n pageEnabled,\n pipelines,\n pipelinesEnabled,\n prompt,\n runState,\n selectedAgent,\n selectedAgentId,\n selectedAgentModels,\n selectedAgentQuickPrompts,\n selectedModelRef,\n sessionTraceSummaries,\n sessions,\n sessionsEnabled,\n status,\n statusEnabled,\n theme,\n toolsEnabled,\n traces,\n tracesEnabled,\n attachmentInputRef,\n promptRef,\n transcriptScrollerRef,\n activateRoute,\n navigateFallback,\n navigatePage,\n navigateKnowledgeTab,\n setDeleteCandidate,\n setError,\n setKnowledgeTab,\n setSelectedModelRef,\n setStatus,\n startNewChat,\n selectPlaygroundAgent,\n addPromptAttachments,\n decideToolApproval,\n updatePrompt,\n handlePromptKeyDown,\n answerToolQuestion,\n removePromptAttachment,\n runPrompt,\n toggleTheme,\n updateTranscriptStickiness,\n };\n\n return (\n <StudioConsoleContext.Provider value={contextValue}>\n <RouterProvider router={studioRouter} />\n </StudioConsoleContext.Provider>\n );\n}\n","import { createRoot } from \"react-dom/client\";\nimport { StudioConsole } from \"./app\";\nimport \"./styles.css\";\n\nconst root = document.getElementById(\"anvia-ui\");\n\nif (root !== null) {\n createRoot(root).render(<StudioConsole />);\n}\n"],"file":"index-DMVhlBNM.js"}
|