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

1 line
90 KiB
Plaintext

{"version":3,"file":"index.js","sources":["../dom.ts","../index.tsx"],"sourcesContent":["import type {\n FormEncType,\n HTMLFormMethod,\n RelativeRoutingType,\n} from \"@remix-run/router\";\nimport { stripBasename, UNSAFE_warning as warning } from \"@remix-run/router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n MouseEvent,\n \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams | null\n) {\n let searchParams = createSearchParams(locationSearch);\n\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n\n return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | JsonValue\n | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\n\nexport interface SubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides `<form method>`.\n * Defaults to \"GET\".\n */\n method?: HTMLFormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides `<form action>`.\n * Defaults to the path of the current route.\n */\n action?: string;\n\n /**\n * The encoding used to submit the form. Overrides `<form encType>`.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * In browser-based environments, prevent resetting scroll after this\n * navigation when using the <ScrollRestoration> component\n */\n preventScrollReset?: boolean;\n}\n\nconst supportedFormEncTypes: Set<FormEncType> = new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` ` +\n `and will default to \"${defaultEncType}\"`\n );\n\n return null;\n }\n return encType;\n}\n\nexport function getFormSubmissionInfo(\n target: SubmitTarget,\n basename: string\n): {\n action: string | null;\n method: string;\n encType: string;\n formData: FormData | undefined;\n body: any;\n} {\n let method: string;\n let action: string | null;\n let encType: string;\n let formData: FormData | undefined;\n let body: any;\n\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n formData = new FormData(target);\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n );\n }\n\n // <button>/<input type=\"submit\"> may override attributes of <form>\n\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n\n method =\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n encType =\n getFormEncType(target.getAttribute(\"formenctype\")) ||\n getFormEncType(form.getAttribute(\"enctype\")) ||\n defaultEncType;\n\n // Build a FormData object populated from a form and submitter\n formData = new FormData(form, target);\n\n // If this browser doesn't support the `FormData(el, submitter)` format,\n // then tack on the submitter value at the end. This is a lightweight\n // solution that is not 100% spec compliant. For complete support in older\n // browsers, consider using the `formdata-submitter-polyfill` package\n if (!isFormDataSubmitterSupported()) {\n let { name, type, value } = target;\n if (type === \"image\") {\n let prefix = name ? `${name}.` : \"\";\n formData.append(`${prefix}x`, \"0\");\n formData.append(`${prefix}y`, \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\n `Cannot submit element that is not <form>, <button>, or ` +\n `<input type=\"submit|image\">`\n );\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n\n // Send body for <Form encType=\"text/plain\" so we encode it into text\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = undefined;\n }\n\n return { action, method: method.toLowerCase(), encType, formData, body };\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type {\n FutureConfig,\n Location,\n NavigateOptions,\n NavigationType,\n RelativeRoutingType,\n RouteObject,\n To,\n} from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatches,\n useNavigate,\n useNavigation,\n useResolvedPath,\n unstable_useBlocker as useBlocker,\n UNSAFE_DataRouterContext as DataRouterContext,\n UNSAFE_DataRouterStateContext as DataRouterStateContext,\n UNSAFE_NavigationContext as NavigationContext,\n UNSAFE_RouteContext as RouteContext,\n UNSAFE_mapRouteProperties as mapRouteProperties,\n UNSAFE_useRouteId as useRouteId,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n FutureConfig as RouterFutureConfig,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HTMLFormMethod,\n HydrationState,\n Router as RemixRouter,\n V7_FormMethod,\n} from \"@remix-run/router\";\nimport {\n createRouter,\n createBrowserHistory,\n createHashHistory,\n joinPaths,\n stripBasename,\n UNSAFE_ErrorResponseImpl as ErrorResponseImpl,\n UNSAFE_invariant as invariant,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\n SubmitTarget,\n} from \"./dom\";\nimport {\n createSearchParams,\n defaultMethod,\n getFormSubmissionInfo,\n getSearchParamsForLocation,\n shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n ParamKeyValuePair,\n SubmitOptions,\n URLSearchParamsInit,\n V7_FormMethod,\n};\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n unstable_Blocker,\n unstable_BlockerFunction,\n DataRouteMatch,\n DataRouteObject,\n ErrorResponse,\n Fetcher,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LazyRouteFunction,\n LayoutRouteProps,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\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} from \"react-router\";\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createMemoryRouter,\n createPath,\n createRoutesFromChildren,\n createRoutesFromElements,\n defer,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n redirectDocument,\n renderMatches,\n resolvePath,\n useActionData,\n useAsyncError,\n useAsyncValue,\n unstable_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 useRouteLoaderData,\n useRoutes,\n} from \"react-router\";\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 UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_useRouteId,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n var __staticRouterHydrationData: HydrationState | undefined;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\ninterface DOMRouterOpts {\n basename?: string;\n future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\nexport function createBrowserRouter(\n routes: RouteObject[],\n opts?: DOMRouterOpts\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: {\n ...opts?.future,\n v7_prependBasename: true,\n },\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n }).initialize();\n}\n\nexport function createHashRouter(\n routes: RouteObject[],\n opts?: DOMRouterOpts\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n future: {\n ...opts?.future,\n v7_prependBasename: true,\n },\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n }).initialize();\n}\n\nfunction parseHydrationData(): HydrationState | undefined {\n let state = window?.__staticRouterHydrationData;\n if (state && state.errors) {\n state = {\n ...state,\n errors: deserializeErrors(state.errors),\n };\n }\n return state;\n}\n\nfunction deserializeErrors(\n errors: RemixRouter[\"state\"][\"errors\"]\n): RemixRouter[\"state\"][\"errors\"] {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized: RemixRouter[\"state\"][\"errors\"] = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // serializeErrors in react-router-dom/server.tsx :)\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponseImpl(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n // @ts-expect-error\n let error = new ErrorConstructor(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n // no-op - fall through and create a normal Error\n }\n }\n }\n\n if (serialized[key] == null) {\n let error = new Error(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\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\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: FutureConfig;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n future,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window, v5Compat: true });\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 HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: FutureConfig;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({\n basename,\n children,\n future,\n window,\n}: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window, v5Compat: true });\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 HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n future?: FutureConfig;\n history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({\n basename,\n children,\n future,\n history,\n}: HistoryRouterProps) {\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\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n to: To;\n}\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n ...rest\n },\n ref\n ) {\n let { basename } = React.useContext(NavigationContext);\n\n // Rendered into <a href> for absolute URLs\n let absoluteHref;\n let isExternal = false;\n\n if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n // Render the absolute href server- and client-side\n absoluteHref = to;\n\n // Only check for external origins client-side\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\")\n ? new URL(currentUrl.protocol + to)\n : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n\n if (targetUrl.origin === currentUrl.origin && path != null) {\n // Strip the protocol/origin/basename for same-origin absolute URLs\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n // We can't do external URL detection without a valid URL\n warning(\n false,\n `<Link to=\"${to}\"> contains an invalid URL which will probably break ` +\n `when clicked - please update to a valid URL path.`\n );\n }\n }\n }\n\n // Rendered into <a href> for relative URLs\n let href = useHref(to, { relative });\n\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={absoluteHref || href}\n onClick={isExternal || reloadDocument ? onClick : handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean; isPending: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?:\n | string\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => React.CSSProperties | undefined);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React.useContext(DataRouterStateContext);\n let { navigator } = React.useContext(NavigationContext);\n\n let toPathname = navigator.encodeLocation\n ? navigator.encodeLocation(path).pathname\n : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname =\n routerState && routerState.navigation && routerState.navigation.location\n ? routerState.navigation.location.pathname\n : null;\n\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname\n ? nextLocationPathname.toLowerCase()\n : null;\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let isPending =\n nextLocationPathname != null &&\n (nextLocationPathname === toPathname ||\n (!end &&\n nextLocationPathname.startsWith(toPathname) &&\n nextLocationPathname.charAt(toPathname.length) === \"/\"));\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive, isPending });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\"\n ? styleProp({ isActive, isPending })\n : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n >\n {typeof children === \"function\"\n ? children({ isActive, isPending })\n : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\nexport interface FetcherFormProps\n extends React.FormHTMLAttributes<HTMLFormElement> {\n /**\n * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n * \"put\", \"delete\", \"patch\".\n */\n method?: HTMLFormMethod;\n\n /**\n * `<form encType>` - enhancing beyond the normal string type and limiting\n * to the built-in browser supported values\n */\n encType?:\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"text/plain\";\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * Prevent the scroll position from resetting to the top of the viewport on\n * completion of the navigation when using the <ScrollRestoration> component\n */\n preventScrollReset?: boolean;\n\n /**\n * A function to call when the form is submitted. If you call\n * `event.preventDefault()` then this form will not do anything.\n */\n onSubmit?: React.FormEventHandler<HTMLFormElement>;\n}\n\nexport interface FormProps extends FetcherFormProps {\n /**\n * Forces a full document navigation instead of a fetch.\n */\n reloadDocument?: boolean;\n\n /**\n * Replaces the current entry in the browser history stack when the form\n * navigates. Use this if you don't want the user to be able to click \"back\"\n * to the page with the form on it.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n}\n\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n let submit = useSubmit();\n return <FormImpl {...props} submit={submit} ref={ref} />;\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\ninterface FormImplProps extends FormProps {\n submit: SubmitFunction | FetcherSubmitFunction;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n reloadDocument,\n replace,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n submit,\n relative,\n preventScrollReset,\n ...props\n },\n forwardedRef\n ) => {\n let formMethod: HTMLFormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action, { relative });\n let submitHandler: React.FormEventHandler<HTMLFormElement> = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n .submitter as HTMLFormSubmitter | null;\n\n let submitMethod =\n (submitter?.getAttribute(\"formmethod\") as HTMLFormMethod | undefined) ||\n method;\n\n submit(submitter || event.currentTarget, {\n method: submitMethod,\n replace,\n state,\n relative,\n preventScrollReset,\n });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={reloadDocument ? onSubmit : submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n FormImpl.displayName = \"FormImpl\";\n}\n\nexport interface ScrollRestorationProps {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n getKey,\n storageKey,\n}: ScrollRestorationProps) {\n useScrollRestoration({ getKey, storageKey });\n return null;\n}\n\nif (__DEV__) {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n UseScrollRestoration = \"useScrollRestoration\",\n UseSubmit = \"useSubmit\",\n UseSubmitFetcher = \"useSubmitFetcher\",\n UseFetcher = \"useFetcher\",\n}\n\nenum DataRouterStateHook {\n UseFetchers = \"useFetchers\",\n UseScrollRestoration = \"useScrollRestoration\",\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\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, preventScrollReset, relative });\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n ]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React.useRef(false);\n\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(\n location.search,\n hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n ),\n [location.search]\n );\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback<SetURLSearchParams>(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n );\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\nexport type SetURLSearchParams = (\n nextInit?:\n | URLSearchParamsInit\n | ((prev: URLSearchParams) => URLSearchParamsInit),\n navigateOpts?: NavigateOptions\n) => void;\n\n/**\n * Submits a HTML `<form>` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n (\n /**\n * Specifies the `<form>` to be submitted to the server, a specific\n * `<button>` or `<input type=\"submit\">` to use to submit the form, or some\n * arbitrary data to submit.\n *\n * Note: When using a `<button>` its `name` and `value` will also be\n * included in the form data that is submitted.\n */\n target: SubmitTarget,\n\n /**\n * Options that override the `<form>`'s own attributes. Required when\n * submitting arbitrary data without a backing `<form>`.\n */\n options?: SubmitOptions\n ): void;\n}\n\n/**\n * Submits a fetcher `<form>` to the server without reloading the page.\n */\nexport interface FetcherSubmitFunction {\n (\n target: SubmitTarget,\n // Fetchers cannot replace or set state because they are not navigation events\n options?: Omit<SubmitOptions, \"replace\" | \"state\">\n ): void;\n}\n\nfunction validateClientSideSubmission() {\n if (typeof document === \"undefined\") {\n throw new Error(\n \"You are calling submit during the server render. \" +\n \"Try calling submit within a `useEffect` or callback instead.\"\n );\n }\n}\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nexport function useSubmit(): SubmitFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseSubmit);\n let { basename } = React.useContext(NavigationContext);\n let currentRouteId = useRouteId();\n\n return React.useCallback<SubmitFunction>(\n (target, options = {}) => {\n validateClientSideSubmission();\n\n let { action, method, encType, formData, body } = getFormSubmissionInfo(\n target,\n basename\n );\n\n router.navigate(options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || (method as HTMLFormMethod),\n formEncType: options.encType || (encType as FormEncType),\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n });\n },\n [router, basename, currentRouteId]\n );\n}\n\n/**\n * Returns the implementation for fetcher.submit\n */\nfunction useSubmitFetcher(\n fetcherKey: string,\n fetcherRouteId: string\n): FetcherSubmitFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseSubmitFetcher);\n let { basename } = React.useContext(NavigationContext);\n\n return React.useCallback<FetcherSubmitFunction>(\n (target, options = {}) => {\n validateClientSideSubmission();\n\n let { action, method, encType, formData, body } = getFormSubmissionInfo(\n target,\n basename\n );\n\n invariant(\n fetcherRouteId != null,\n \"No routeId available for useFetcher()\"\n );\n router.fetch(fetcherKey, fetcherRouteId, options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || (method as HTMLFormMethod),\n formEncType: options.encType || (encType as FormEncType),\n });\n },\n [router, basename, fetcherKey, fetcherRouteId]\n );\n}\n\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nexport function useFormAction(\n action?: string,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n let { basename } = React.useContext(NavigationContext);\n let routeContext = React.useContext(RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n // Shallow clone path so we can modify it below, otherwise we modify the\n // object referenced by useMemo inside useResolvedPath\n let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n\n // Previously we set the default action to \".\". The problem with this is that\n // `useResolvedPath(\".\")` excludes search params of the resolved URL. This is\n // the intended behavior of when \".\" is specifically provided as\n // the form action, but inconsistent w/ browsers when the action is omitted.\n // https://github.com/remix-run/remix/issues/927\n let location = useLocation();\n if (action == null) {\n // Safe to write to this directly here since if action was undefined, we\n // would have called useResolvedPath(\".\") which will never include a search\n path.search = location.search;\n\n // When grabbing search params from the URL, remove the automatically\n // inserted ?index param so we match the useResolvedPath search behavior\n // which would not include ?index\n if (match.route.index) {\n let params = new URLSearchParams(path.search);\n params.delete(\"index\");\n path.search = params.toString() ? `?${params.toString()}` : \"\";\n }\n }\n\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the form action. If this is a root navigation, then just use\n // the raw basename which allows the basename to have full control over the\n // presence of a trailing slash on root actions\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FetcherFormProps>(\n (props, ref) => {\n let submit = useSubmitFetcher(fetcherKey, routeId);\n return <FormImpl {...props} ref={ref} submit={submit} />;\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\nexport type FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: FetcherSubmitFunction;\n load: (href: string) => void;\n};\n\n// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nexport function useFetcher<TData = any>(): FetcherWithComponents<TData> {\n let { router } = useDataRouterContext(DataRouterHook.UseFetcher);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useFetcher must be used inside a RouteContext`);\n\n let routeId = route.matches[route.matches.length - 1]?.route.id;\n invariant(\n routeId != null,\n `useFetcher can only be used on routes that contain a unique \"id\"`\n );\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => {\n invariant(routeId, `No routeId available for fetcher.Form()`);\n return createFetcherForm(fetcherKey, routeId);\n });\n let [load] = React.useState(() => (href: string) => {\n invariant(router, \"No router available for fetcher.load()\");\n invariant(routeId, \"No routeId available for fetcher.load()\");\n router.fetch(fetcherKey, routeId, href);\n });\n let submit = useSubmitFetcher(fetcherKey, routeId);\n\n let fetcher = router.getFetcher<TData>(fetcherKey);\n\n let fetcherWithComponents = React.useMemo(\n () => ({\n Form,\n submit,\n load,\n ...fetcher,\n }),\n [fetcher, Form, submit, load]\n );\n\n React.useEffect(() => {\n // Is this busted when the React team gets real weird and calls effects\n // twice on mount? We really just need to garbage collect here when this\n // fetcher is no longer around.\n return () => {\n if (!router) {\n console.warn(`No router available to clean up from useFetcher()`);\n return;\n }\n router.deleteFetcher(fetcherKey);\n };\n }, [router, fetcherKey]);\n\n return fetcherWithComponents;\n}\n\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nexport function useFetchers(): Fetcher[] {\n let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n return [...state.fetchers.values()];\n}\n\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions: Record<string, number> = {};\n\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let { router } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n let { restoreScrollPosition, preventScrollReset } = useDataRouterState(\n DataRouterStateHook.UseScrollRestoration\n );\n let { basename } = React.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n\n // Trigger manual scroll restoration while we're active\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n\n // Save positions on pagehide\n usePageHide(\n React.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = (getKey ? getKey(location, matches) : null) || location.key;\n savedScrollPositions[key] = window.scrollY;\n }\n sessionStorage.setItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n JSON.stringify(savedScrollPositions)\n );\n window.history.scrollRestoration = \"auto\";\n }, [storageKey, getKey, navigation.state, location, matches])\n );\n\n // Read in any saved scroll locations\n if (typeof document !== \"undefined\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n );\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n // no-op, use default empty object\n }\n }, [storageKey]);\n\n // Enable scroll restoration in the router\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n let getKeyWithoutBasename: GetScrollRestorationKeyFunction | undefined =\n getKey && basename !== \"/\"\n ? (location, matches) =>\n getKey(\n // Strip the basename to match useLocation()\n {\n ...location,\n pathname:\n stripBasename(location.pathname, basename) ||\n location.pathname,\n },\n matches\n )\n : getKey;\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKeyWithoutBasename\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n // Explicit false means don't do anything (used for submissions)\n if (restoreScrollPosition === false) {\n return;\n }\n\n // been here before, scroll to it\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n\n // try to scroll to the hash\n if (location.hash) {\n let el = document.getElementById(\n decodeURIComponent(location.hash.slice(1))\n );\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Don't reset if this navigation opted out\n if (preventScrollReset === true) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\n\nexport { useScrollRestoration as UNSAFE_useScrollRestoration };\n\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nexport function useBeforeUnload(\n callback: (event: BeforeUnloadEvent) => any,\n options?: { capture?: boolean }\n): void {\n let { capture } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? { capture } : undefined;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\n\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes. This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(\n callback: (event: PageTransitionEvent) => any,\n options?: { capture?: boolean }\n): void {\n let { capture } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? { capture } : undefined;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\n\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open. Use at your own risk.\n */\nfunction usePrompt({ when, message }: { when: boolean; message: string }) {\n let blocker = useBlocker(when);\n\n React.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n // This timeout is needed to avoid a weird \"race\" on POP navigations\n // between the `window.history` revert navigation and the result of\n // `window.confirm`\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n\n React.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\n\nexport { usePrompt as unstable_usePrompt };\n\n//#endregion\n"],"names":["defaultMethod","defaultEncType","isHtmlElement","object","tagName","isButtonElement","toLowerCase","isFormElement","isInputElement","isModifiedEvent","event","metaKey","altKey","ctrlKey","shiftKey","shouldProcessLinkClick","target","button","createSearchParams","init","URLSearchParams","Array","isArray","Object","keys","reduce","memo","key","value","concat","map","v","getSearchParamsForLocation","locationSearch","defaultSearchParams","searchParams","forEach","_","has","getAll","append","_formDataSupportsSubmitter","isFormDataSubmitterSupported","FormData","document","createElement","e","supportedFormEncTypes","Set","getFormEncType","encType","process","env","NODE_ENV","warning","getFormSubmissionInfo","basename","method","action","formData","body","attr","getAttribute","stripBasename","type","form","Error","name","prefix","undefined","createBrowserRouter","routes","opts","createRouter","future","_extends","v7_prependBasename","history","createBrowserHistory","window","hydrationData","parseHydrationData","mapRouteProperties","initialize","createHashRouter","createHashHistory","_window","state","__staticRouterHydrationData","errors","deserializeErrors","entries","serialized","val","__type","ErrorResponseImpl","status","statusText","data","internal","__subType","ErrorConstructor","error","message","stack","START_TRANSITION","startTransitionImpl","React","BrowserRouter","_ref","children","historyRef","useRef","current","v5Compat","setStateImpl","useState","location","v7_startTransition","setState","useCallback","newState","useLayoutEffect","listen","Router","navigationType","navigator","HashRouter","_ref2","HistoryRouter","_ref3","displayName","isBrowser","ABSOLUTE_URL_REGEX","Link","forwardRef","LinkWithRef","_ref4","ref","onClick","relative","reloadDocument","replace","to","preventScrollReset","rest","_objectWithoutPropertiesLoose","_excluded","useContext","NavigationContext","absoluteHref","isExternal","test","currentUrl","URL","href","targetUrl","startsWith","protocol","path","pathname","origin","search","hash","useHref","internalOnClick","useLinkClickHandler","handleClick","defaultPrevented","NavLink","NavLinkWithRef","_ref5","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","_excluded2","useResolvedPath","useLocation","routerState","DataRouterStateContext","toPathname","encodeLocation","locationPathname","nextLocationPathname","navigation","isActive","charAt","length","isPending","ariaCurrent","filter","Boolean","join","Form","props","submit","useSubmit","FormImpl","_ref6","forwardedRef","onSubmit","_excluded3","formMethod","formAction","useFormAction","submitHandler","preventDefault","submitter","nativeEvent","submitMethod","currentTarget","ScrollRestoration","_ref7","getKey","storageKey","useScrollRestoration","DataRouterHook","DataRouterStateHook","getDataRouterConsoleError","hookName","useDataRouterContext","ctx","DataRouterContext","invariant","useDataRouterState","_temp","replaceProp","navigate","useNavigate","createPath","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","useMemo","setSearchParams","nextInit","navigateOptions","newSearchParams","validateClientSideSubmission","router","UseSubmit","currentRouteId","useRouteId","options","formEncType","fromRouteId","useSubmitFetcher","fetcherKey","fetcherRouteId","UseSubmitFetcher","fetch","_temp2","routeContext","RouteContext","match","matches","slice","route","index","params","delete","toString","joinPaths","createFetcherForm","routeId","FetcherForm","fetcherId","useFetcher","_route$matches","UseFetcher","id","String","load","fetcher","getFetcher","fetcherWithComponents","useEffect","console","warn","deleteFetcher","useFetchers","UseFetchers","fetchers","values","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","_temp3","UseScrollRestoration","restoreScrollPosition","useMatches","useNavigation","scrollRestoration","usePageHide","scrollY","sessionStorage","setItem","JSON","stringify","sessionPositions","getItem","parse","getKeyWithoutBasename","disableScrollRestoration","enableScrollRestoration","scrollTo","el","getElementById","decodeURIComponent","scrollIntoView","useBeforeUnload","callback","capture","addEventListener","removeEventListener","usePrompt","_ref8","when","blocker","useBlocker","proceed","confirm","setTimeout","reset"],"mappings":"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"}