amis-rpc-design/node_modules/react-router/dist/umd/react-router.production.min.js.map
2023-10-07 19:42:30 +08:00

1 line
84 KiB
Plaintext

{"version":3,"file":"react-router.production.min.js","sources":["../../lib/context.ts","../../lib/hooks.tsx","../../lib/components.tsx","../../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string,\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n <LocationContext.Provider\n value={{\n location: {\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\",\n ...location,\n },\n navigationType: NavigationType.Pop,\n }}\n >\n {renderedMatches}\n </LocationContext.Provider>\n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n <p>💿 Hey developer 👋</p>\n <p>\n You can provide a way better UX than this when your app throws errors\n by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n <code style={codeStyles}>errorElement</code> prop on your route.\n </p>\n </>\n );\n }\n\n return (\n <>\n <h2>Unexpected Application Error!</h2>\n <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n {stack ? <pre style={preStyles}>{stack}</pre> : null}\n {devInfo}\n </>\n );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n <RouteContext.Provider value={this.props.routeContext}>\n <RouteErrorContext.Provider\n value={this.state.error}\n children={this.props.component}\n />\n </RouteContext.Provider>\n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch<string, RouteObject>;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n <RouteContext.Provider value={routeContext}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n errorElement = match.route.errorElement || defaultErrorElement;\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `<Route Component={...}>` in `<Routes>` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = <match.route.Component />;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n <RenderedRoute\n match={match}\n routeContext={{\n outlet,\n matches,\n isDataRoute: dataRouterState != null,\n }}\n children={children}\n />\n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n <RenderErrorBoundary\n location={dataRouterState.location}\n revalidation={dataRouterState.revalidation}\n component={errorElement}\n error={error}\n children={getChildren()}\n routeContext={{ outlet: null, matches, isDataRoute: true }}\n />\n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor <Await /> value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor <Await /> value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback<BlockerFunction>(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n future?: FutureConfig;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: RouterState) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return (\n <>\n <DataRouterContext.Provider value={dataRouterContext}>\n <DataRouterStateContext.Provider value={state}>\n <Router\n basename={basename}\n location={state.location}\n navigationType={state.historyAction}\n navigator={navigator}\n >\n {state.initialized ? (\n <DataRoutes routes={router.routes} state={state} />\n ) : (\n fallbackElement\n )}\n </Router>\n </DataRouterStateContext.Provider>\n </DataRouterContext.Provider>\n {null}\n </>\n );\n}\n\nfunction DataRoutes({\n routes,\n state,\n}: {\n routes: DataRouteObject[];\n state: RouterState;\n}): React.ReactElement | null {\n return useRoutesImpl(routes, undefined, state);\n}\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n future?: FutureConfig;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n future,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true,\n });\n }\n\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location,\n });\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: { action: NavigationType; location: Location }) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n to,\n replace,\n state,\n relative,\n}: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let navigate = useNavigate();\n\n // Resolve the path outside of the effect so that when effects run twice in\n // StrictMode they navigate to the same place\n let path = resolveTo(\n to,\n getPathContributingMatches(matches).map((match) => match.pathnameBase),\n locationPathname,\n relative === \"path\"\n );\n let jsonPath = JSON.stringify(path);\n\n React.useEffect(\n () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n [navigate, jsonPath, relative, replace, state]\n );\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n path?: NonIndexRouteObject[\"path\"];\n id?: NonIndexRouteObject[\"id\"];\n lazy?: LazyRouteFunction<NonIndexRouteObject>;\n loader?: NonIndexRouteObject[\"loader\"];\n action?: NonIndexRouteObject[\"action\"];\n hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n handle?: NonIndexRouteObject[\"handle\"];\n index?: false;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n path?: IndexRouteObject[\"path\"];\n id?: IndexRouteObject[\"id\"];\n lazy?: LazyRouteFunction<IndexRouteObject>;\n loader?: IndexRouteObject[\"loader\"];\n action?: IndexRouteObject[\"action\"];\n hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n handle?: IndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let locationContext = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n },\n navigationType,\n };\n }, [basename, pathname, search, hash, state, key, navigationType]);\n\n warning(\n locationContext != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (locationContext == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider children={children} value={locationContext} />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n children: React.ReactNode | AwaitResolveRenderFunction;\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n return (\n <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n <ResolveAwait>{children}</ResolveAwait>\n </AwaitErrorBoundary>\n );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n error: any;\n};\n\nenum AwaitRenderStatus {\n pending,\n success,\n error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n AwaitErrorBoundaryProps,\n AwaitErrorBoundaryState\n> {\n constructor(props: AwaitErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"<Await> caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n let { children, errorElement, resolve } = this.props;\n\n let promise: TrackedPromise | null = null;\n let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if ((resolve as TrackedPromise)._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status =\n promise._error !== undefined\n ? AwaitRenderStatus.error\n : promise._data !== undefined\n ? AwaitRenderStatus.success\n : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data: any) =>\n Object.defineProperty(resolve, \"_data\", { get: () => data }),\n (error: any) =>\n Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n\n if (\n status === AwaitRenderStatus.error &&\n promise._error instanceof AbortedDeferredError\n ) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return <AwaitContext.Provider value={promise} children={errorElement} />;\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return <AwaitContext.Provider value={promise} children={children} />;\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on <Await>\n */\nfunction ResolveAwait({\n children,\n}: {\n children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n let data = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data) : children;\n return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode,\n parentPath: number[] = []\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element, index) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n let treePath = [...parentPath, index];\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, treePath)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n\n let route: RouteObject = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary:\n element.props.ErrorBoundary != null ||\n element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n ActionFunction,\n ActionFunctionArgs,\n Blocker,\n BlockerFunction,\n ErrorResponse,\n Fetcher,\n HydrationState,\n InitialEntry,\n JsonFunction,\n LazyRouteFunction,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n Navigation,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RedirectFunction,\n RelativeRoutingType,\n Router as RemixRouter,\n FutureConfig as RouterFutureConfig,\n ShouldRevalidateFunction,\n ShouldRevalidateFunctionArgs,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n createPath,\n createRouter,\n defer,\n generatePath,\n isRouteErrorResponse,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n redirectDocument,\n resolvePath,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n AwaitProps,\n FutureConfig,\n IndexRouteProps,\n LayoutRouteProps,\n MemoryRouterProps,\n NavigateProps,\n OutletProps,\n PathRouteProps,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n} from \"./lib/components\";\nimport {\n Await,\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createRoutesFromChildren,\n renderMatches,\n} from \"./lib/components\";\nimport type {\n DataRouteMatch,\n DataRouteObject,\n IndexRouteObject,\n NavigateOptions,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./lib/context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n useActionData,\n useAsyncError,\n useAsyncValue,\n useBlocker,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteId,\n useRouteLoaderData,\n useRoutes,\n useRoutesImpl,\n} from \"./lib/hooks\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n DataRouteMatch,\n DataRouteObject,\n ErrorResponse,\n Fetcher,\n FutureConfig,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LazyRouteFunction,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n PathRouteProps,\n Pathname,\n RedirectFunction,\n RelativeRoutingType,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n ShouldRevalidateFunctionArgs,\n To,\n UIMatch,\n Blocker as unstable_Blocker,\n BlockerFunction as unstable_BlockerFunction,\n};\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createPath,\n createRoutesFromChildren,\n createRoutesFromChildren as createRoutesFromElements,\n defer,\n generatePath,\n isRouteErrorResponse,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n redirectDocument,\n renderMatches,\n resolvePath,\n useBlocker as unstable_useBlocker,\n useActionData,\n useAsyncError,\n useAsyncValue,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutes,\n};\n\nfunction mapRouteProperties(route: RouteObject) {\n let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n // Note: this check also occurs in createRoutesFromChildren so update\n // there if you change this -- please and thank you!\n hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n };\n\n if (route.Component) {\n if (__DEV__) {\n if (route.element) {\n warning(\n false,\n \"You should not include both `Component` and `element` on your route - \" +\n \"`Component` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n element: React.createElement(route.Component),\n Component: undefined,\n });\n }\n\n if (route.ErrorBoundary) {\n if (__DEV__) {\n if (route.errorElement) {\n warning(\n false,\n \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n \"`ErrorBoundary` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n errorElement: React.createElement(route.ErrorBoundary),\n ErrorBoundary: undefined,\n });\n }\n\n return updates;\n}\n\nexport function createMemoryRouter(\n routes: RouteObject[],\n opts?: {\n basename?: string;\n future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n hydrationData?: HydrationState;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n }\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: {\n ...opts?.future,\n v7_prependBasename: true,\n },\n history: createMemoryHistory({\n initialEntries: opts?.initialEntries,\n initialIndex: opts?.initialIndex,\n }),\n hydrationData: opts?.hydrationData,\n routes,\n mapRouteProperties,\n }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n DataRouterContext as UNSAFE_DataRouterContext,\n DataRouterStateContext as UNSAFE_DataRouterStateContext,\n LocationContext as UNSAFE_LocationContext,\n NavigationContext as UNSAFE_NavigationContext,\n RouteContext as UNSAFE_RouteContext,\n mapRouteProperties as UNSAFE_mapRouteProperties,\n useRouteId as UNSAFE_useRouteId,\n useRoutesImpl as UNSAFE_useRoutesImpl,\n};\n"],"names":["DataRouterContext","React","createContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useInRouterContext","useContext","useLocation","invariant","location","useIsomorphicLayoutEffect","cb","static","useLayoutEffect","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","id","useCurrentRouteId","DataRouterStateHook","activeRef","useRef","current","useCallback","to","options","navigate","_extends","fromRouteId","useNavigateStable","dataRouterContext","basename","navigator","pathname","locationPathname","routePathnamesJson","JSON","stringify","getPathContributingMatches","map","match","pathnameBase","go","path","resolveTo","parse","relative","joinPaths","replace","push","state","useNavigateUnstable","OutletContext","useOutlet","context","createElement","Provider","value","useResolvedPath","_temp2","useMemo","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","routeMatch","length","parentParams","params","parentPathnameBase","route","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parsePath","startsWith","remainingPathname","slice","matchRoutes","renderedMatches","_renderMatches","Object","assign","encodeLocation","search","hash","key","navigationType","NavigationType","Action","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","preStyles","padding","backgroundColor","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","Component","constructor","props","super","this","revalidation","componentDidCatch","errorInfo","console","render","routeContext","children","component","RenderedRoute","_ref","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState2","_dataRouterState","errors","errorIndex","findIndex","m","UNSAFE_invariant","Math","min","reduceRight","index","concat","getChildren","element","hookName","ctx","useDataRouterState","useRouteContext","thisRoute","_state$errors","UseRouteError","routeId","useAsyncValue","_data","blockerId","startTransitionImpl","DataRoutes","_ref2","undefined","Route","_props","Router","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","stripBasename","AwaitRenderStatus","neverSettledPromise","Promise","AwaitErrorBoundary","resolve","promise","pending","renderError","reject","catch","defineProperty","get","_tracked","_error","success","then","data","AbortedDeferredError","ResolveAwait","_ref8","toRender","createRoutesFromChildren","parentPath","Children","forEach","isValidElement","treePath","type","apply","join","caseSensitive","loader","action","hasErrorBoundary","shouldRevalidate","handle","lazy","mapRouteProperties","updates","_ref7","_ref3","initialEntries","initialIndex","future","historyRef","createMemoryHistory","v5Compat","history","setStateImpl","useState","v7_startTransition","setState","newState","listen","_ref4","UNSAFE_getPathContributingMatches","jsonPath","useEffect","fallbackElement","subscribe","createHref","n","opts","preventScrollReset","historyAction","initialized","_ref6","UseRouteId","createRouter","v7_prependBasename","hydrationData","initialize","shouldBlock","UseBlocker","blockerKey","setBlockerKey","blockerFunction","arg","currentLocation","nextLocation","String","deleteBlocker","getBlocker","blockers","has","IDLE_BLOCKER","UseActionData","values","actionData","_temp","joinedPathname","UseLoaderData","loaderData","pattern","matchPath","UseMatches","convertRouteMatchToUiMatch","UseNavigation","navigation","UseRevalidator","revalidate","UseRouteLoaderData"],"mappings":"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"}