react-router-dom
Advanced tools
+8
-0
| # react-router-dom | ||
| ## 6.4.0-pre.7 | ||
| ### Patch Changes | ||
| - 26302209: Respect the `<Link replace>` prop if it is defined (#8779) | ||
| - Updated dependencies | ||
| - `react-router@6.4.0-pre.7` | ||
| ## 6.4.0-pre.6 | ||
@@ -4,0 +12,0 @@ |
+3
-3
@@ -15,3 +15,3 @@ /** | ||
| /** @internal */ | ||
| export { UNSAFE_NavigationContext, UNSAFE_LocationContext, UNSAFE_RouteContext, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_resetModuleScope, useRenderDataRouter, } from "react-router"; | ||
| export { UNSAFE_NavigationContext, UNSAFE_LocationContext, UNSAFE_RouteContext, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, useRenderDataRouter, } from "react-router"; | ||
| export interface DataBrowserRouterProps { | ||
@@ -184,5 +184,5 @@ children?: React.ReactNode; | ||
| export declare function useSubmit(): SubmitFunction; | ||
| declare function useSubmitImpl(fetcherKey?: string): SubmitFunction; | ||
| declare function useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction; | ||
| export declare function useFormAction(action?: string): string; | ||
| declare function createFetcherForm(fetcherKey: string): React.ForwardRefExoticComponent<FormProps & React.RefAttributes<HTMLFormElement>>; | ||
| declare function createFetcherForm(fetcherKey: string, routeId: string): React.ForwardRefExoticComponent<FormProps & React.RefAttributes<HTMLFormElement>>; | ||
| declare type FetcherWithComponents<TData> = Fetcher<TData> & { | ||
@@ -189,0 +189,0 @@ Form: ReturnType<typeof createFetcherForm>; |
+26
-13
| /** | ||
| * React Router DOM v6.4.0-pre.6 | ||
| * React Router DOM v6.4.0-pre.7 | ||
| * | ||
@@ -13,3 +13,3 @@ * Copyright (c) Remix Software Inc. | ||
| import { useRenderDataRouter, Router, useHref, createPath, useResolvedPath, useMatch, UNSAFE_DataRouterStateContext, useNavigate, useLocation, UNSAFE_DataRouterContext, UNSAFE_RouteContext } from 'react-router'; | ||
| export { DataMemoryRouter, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_resetModuleScope, createPath, createRoutesFromChildren, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, renderMatches, resolvePath, useActionData, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useRenderDataRouter, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router'; | ||
| export { DataMemoryRouter, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, createPath, createRoutesFromChildren, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, renderMatches, resolvePath, useActionData, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useRenderDataRouter, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router'; | ||
| import { createBrowserRouter, createHashRouter, createBrowserHistory, createHashHistory, matchPath, invariant } from '@remix-run/router'; | ||
@@ -190,3 +190,3 @@ | ||
| _excluded2 = ["aria-current", "caseSensitive", "className", "end", "style", "to", "children"], | ||
| _excluded3 = ["replace", "method", "action", "onSubmit", "fetcherKey"]; | ||
| _excluded3 = ["replace", "method", "action", "onSubmit", "fetcherKey", "routeId"]; | ||
| function DataBrowserRouter(_ref) { | ||
@@ -467,7 +467,8 @@ let { | ||
| onSubmit, | ||
| fetcherKey | ||
| fetcherKey, | ||
| routeId | ||
| } = _ref8, | ||
| props = _objectWithoutPropertiesLoose(_ref8, _excluded3); | ||
| let submit = useSubmitImpl(fetcherKey); | ||
| let submit = useSubmitImpl(fetcherKey, routeId); | ||
| let formMethod = method.toLowerCase() === "get" ? "get" : "post"; | ||
@@ -580,3 +581,3 @@ let formAction = useFormAction(action); | ||
| function useSubmitImpl(fetcherKey) { | ||
| function useSubmitImpl(fetcherKey, routeId) { | ||
| let router = React.useContext(UNSAFE_DataRouterContext); | ||
@@ -612,7 +613,8 @@ let defaultAction = useFormAction(); | ||
| if (fetcherKey) { | ||
| router.fetch(fetcherKey, href, opts); | ||
| !(routeId != null) ? process.env.NODE_ENV !== "production" ? invariant(false, "No routeId available for useFetcher()") : invariant(false) : void 0; | ||
| router.fetch(fetcherKey, routeId, href, opts); | ||
| } else { | ||
| router.navigate(href, opts); | ||
| } | ||
| }, [defaultAction, router, fetcherKey]); | ||
| }, [defaultAction, router, fetcherKey, routeId]); | ||
| } | ||
@@ -640,7 +642,8 @@ | ||
| function createFetcherForm(fetcherKey) { | ||
| function createFetcherForm(fetcherKey, routeId) { | ||
| let FetcherForm = /*#__PURE__*/React.forwardRef((props, ref) => { | ||
| return /*#__PURE__*/React.createElement(FormImpl, _extends({}, props, { | ||
| ref: ref, | ||
| fetcherKey: fetcherKey | ||
| fetcherKey: fetcherKey, | ||
| routeId: routeId | ||
| })); | ||
@@ -663,11 +666,21 @@ }); | ||
| function useFetcher() { | ||
| var _route$matches; | ||
| let router = React.useContext(UNSAFE_DataRouterContext); | ||
| !router ? process.env.NODE_ENV !== "production" ? invariant(false, "useFetcher must be used within a DataRouter") : invariant(false) : void 0; | ||
| let route = React.useContext(UNSAFE_RouteContext); | ||
| !route ? process.env.NODE_ENV !== "production" ? invariant(false, "useFetcher must be used inside a RouteContext") : invariant(false) : void 0; | ||
| let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id; | ||
| !(routeId != null) ? process.env.NODE_ENV !== "production" ? invariant(false, "useFetcher can only be used on routes that contain a unique \"id\"") : invariant(false) : void 0; | ||
| let [fetcherKey] = React.useState(() => String(++fetcherId)); | ||
| let [Form] = React.useState(() => createFetcherForm(fetcherKey)); | ||
| let [Form] = React.useState(() => { | ||
| !routeId ? process.env.NODE_ENV !== "production" ? invariant(false, "No routeId available for fetcher.Form()") : invariant(false) : void 0; | ||
| return createFetcherForm(fetcherKey, routeId); | ||
| }); | ||
| let [load] = React.useState(() => href => { | ||
| !router ? process.env.NODE_ENV !== "production" ? invariant(false, "No router available for fetcher.load()") : invariant(false) : void 0; | ||
| router.fetch(fetcherKey, href); | ||
| !routeId ? process.env.NODE_ENV !== "production" ? invariant(false, "No routeId available for fetcher.load()") : invariant(false) : void 0; | ||
| router.fetch(fetcherKey, routeId, href); | ||
| }); | ||
| let submit = useSubmitImpl(fetcherKey); | ||
| let submit = useSubmitImpl(fetcherKey, routeId); | ||
| let fetcher = router.getFetcher(fetcherKey); | ||
@@ -674,0 +687,0 @@ let fetcherWithComponents = React.useMemo(() => _extends({ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../dom.ts","../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_resetModuleScope,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n router.fetch(fetcherKey, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return <FormImpl {...props} ref={ref} fetcherKey={fetcherKey} />;\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => createFetcherForm(fetcherKey));\n let [load] = React.useState(() => (href: string) => {\n invariant(router, `No router available for fetcher.load()`);\n router.fetch(fetcherKey, href);\n });\n let submit = useSubmitImpl(fetcherKey);\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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\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","has","getAll","forEach","append","getFormSubmissionInfo","defaultAction","options","method","action","encType","formData","submissionTrigger","getAttribute","FormData","name","type","form","Error","set","protocol","host","window","location","url","URL","DataBrowserRouter","children","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","DataHashRouter","createHashRouter","BrowserRouter","basename","historyRef","React","useRef","current","createBrowserHistory","v5Compat","history","state","setState","useState","useLayoutEffect","listen","createElement","Router","navigationType","navigator","HashRouter","createHashHistory","HistoryRouter","displayName","Link","forwardRef","LinkWithRef","ref","onClick","reloadDocument","replace","to","resetScroll","rest","href","useHref","internalOnClick","useLinkClickHandler","handleClick","defaultPrevented","NavLink","NavLinkWithRef","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","path","useResolvedPath","match","useMatch","pathname","routerState","useContext","UNSAFE_DataRouterStateContext","nextLocation","navigation","nextPath","nextMatch","useMemo","matchPath","isPending","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","forwardedRef","onSubmit","fetcherKey","submit","useSubmitImpl","formMethod","formAction","useFormAction","submitHandler","preventDefault","submitter","nativeEvent","currentTarget","ScrollRestoration","getKey","storageKey","useScrollRestoration","replaceProp","navigate","useNavigate","useLocation","useCallback","createPath","useSearchParams","defaultInit","warning","defaultSearchParamsRef","search","setSearchParams","nextInit","navigateOptions","newSearchParams","useSubmit","router","UNSAFE_DataRouterContext","invariant","document","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","matches","slice","route","index","createFetcherForm","FetcherForm","fetcherId","useFetcher","String","load","fetcher","getFetcher","fetcherWithComponents","useEffect","console","warn","deleteFetcher","useFetchers","fetchers","values","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","restoreScrollPosition","resetScrollPosition","scrollRestoration","useBeforeUnload","scrollY","sessionStorage","setItem","JSON","stringify","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","scrollTo","hash","el","getElementById","scrollIntoView","callback","addEventListener","removeEventListener","cond","message"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../dom.ts","../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n routeId,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n invariant(routeId != null, \"No routeId available for useFetcher()\");\n router.fetch(fetcherKey, routeId, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey, routeId]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return (\n <FormImpl\n {...props}\n ref={ref}\n fetcherKey={fetcherKey}\n routeId={routeId}\n />\n );\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let route = React.useContext(UNSAFE_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 = useSubmitImpl(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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\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","has","getAll","forEach","append","getFormSubmissionInfo","defaultAction","options","method","action","encType","formData","submissionTrigger","getAttribute","FormData","name","type","form","Error","set","protocol","host","window","location","url","URL","DataBrowserRouter","children","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","DataHashRouter","createHashRouter","BrowserRouter","basename","historyRef","React","useRef","current","createBrowserHistory","v5Compat","history","state","setState","useState","useLayoutEffect","listen","createElement","Router","navigationType","navigator","HashRouter","createHashHistory","HistoryRouter","displayName","Link","forwardRef","LinkWithRef","ref","onClick","reloadDocument","replace","to","resetScroll","rest","href","useHref","internalOnClick","useLinkClickHandler","handleClick","defaultPrevented","NavLink","NavLinkWithRef","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","path","useResolvedPath","match","useMatch","pathname","routerState","useContext","UNSAFE_DataRouterStateContext","nextLocation","navigation","nextPath","nextMatch","useMemo","matchPath","isPending","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","forwardedRef","onSubmit","fetcherKey","routeId","submit","useSubmitImpl","formMethod","formAction","useFormAction","submitHandler","preventDefault","submitter","nativeEvent","currentTarget","ScrollRestoration","getKey","storageKey","useScrollRestoration","replaceProp","navigate","useNavigate","useLocation","useCallback","createPath","useSearchParams","defaultInit","warning","defaultSearchParamsRef","search","setSearchParams","nextInit","navigateOptions","newSearchParams","useSubmit","router","UNSAFE_DataRouterContext","invariant","document","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","matches","slice","route","index","createFetcherForm","FetcherForm","fetcherId","useFetcher","length","id","String","load","fetcher","getFetcher","fetcherWithComponents","useEffect","console","warn","deleteFetcher","useFetchers","fetchers","values","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","restoreScrollPosition","resetScrollPosition","scrollRestoration","useBeforeUnload","scrollY","sessionStorage","setItem","JSON","stringify","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","scrollTo","hash","el","getElementById","scrollIntoView","callback","addEventListener","removeEventListener","cond","message"],"mappings":"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"} |
+1
-1
| /** | ||
| * React Router DOM v6.4.0-pre.6 | ||
| * React Router DOM v6.4.0-pre.7 | ||
| * | ||
@@ -4,0 +4,0 @@ * Copyright (c) Remix Software Inc. |
| /** | ||
| * React Router DOM v6.4.0-pre.6 | ||
| * React Router DOM v6.4.0-pre.7 | ||
| * | ||
@@ -13,3 +13,3 @@ * Copyright (c) Remix Software Inc. | ||
| import { useRenderDataRouter, Router, useHref, createPath, useResolvedPath, useMatch, UNSAFE_DataRouterStateContext, useNavigate, useLocation, UNSAFE_DataRouterContext, UNSAFE_RouteContext } from 'react-router'; | ||
| export { DataMemoryRouter, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_resetModuleScope, createPath, createRoutesFromChildren, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, renderMatches, resolvePath, useActionData, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useRenderDataRouter, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router'; | ||
| export { DataMemoryRouter, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, createPath, createRoutesFromChildren, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, renderMatches, resolvePath, useActionData, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useRenderDataRouter, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router'; | ||
| import { createBrowserRouter, createHashRouter, createBrowserHistory, createHashHistory, matchPath, invariant } from '@remix-run/router'; | ||
@@ -424,5 +424,6 @@ | ||
| fetcherKey, | ||
| routeId, | ||
| ...props | ||
| }, forwardedRef) => { | ||
| let submit = useSubmitImpl(fetcherKey); | ||
| let submit = useSubmitImpl(fetcherKey, routeId); | ||
| let formMethod = _method.toLowerCase() === "get" ? "get" : "post"; | ||
@@ -532,3 +533,3 @@ let formAction = useFormAction(_action); | ||
| function useSubmitImpl(fetcherKey) { | ||
| function useSubmitImpl(fetcherKey, routeId) { | ||
| let router = React.useContext(UNSAFE_DataRouterContext); | ||
@@ -560,7 +561,8 @@ let defaultAction = useFormAction(); | ||
| if (fetcherKey) { | ||
| router.fetch(fetcherKey, href, opts); | ||
| !(routeId != null) ? invariant(false, "No routeId available for useFetcher()") : void 0; | ||
| router.fetch(fetcherKey, routeId, href, opts); | ||
| } else { | ||
| router.navigate(href, opts); | ||
| } | ||
| }, [defaultAction, router, fetcherKey]); | ||
| }, [defaultAction, router, fetcherKey, routeId]); | ||
| } | ||
@@ -584,7 +586,8 @@ | ||
| function createFetcherForm(fetcherKey) { | ||
| function createFetcherForm(fetcherKey, routeId) { | ||
| let FetcherForm = /*#__PURE__*/React.forwardRef((props, ref) => { | ||
| return /*#__PURE__*/React.createElement(FormImpl, Object.assign({}, props, { | ||
| ref: ref, | ||
| fetcherKey: fetcherKey | ||
| fetcherKey: fetcherKey, | ||
| routeId: routeId | ||
| })); | ||
@@ -609,9 +612,17 @@ }); | ||
| !router ? invariant(false, `useFetcher must be used within a DataRouter`) : void 0; | ||
| let route = React.useContext(UNSAFE_RouteContext); | ||
| !route ? invariant(false, `useFetcher must be used inside a RouteContext`) : void 0; | ||
| let routeId = route.matches[route.matches.length - 1]?.route.id; | ||
| !(routeId != null) ? invariant(false, `useFetcher can only be used on routes that contain a unique "id"`) : void 0; | ||
| let [fetcherKey] = React.useState(() => String(++fetcherId)); | ||
| let [Form] = React.useState(() => createFetcherForm(fetcherKey)); | ||
| let [Form] = React.useState(() => { | ||
| !routeId ? invariant(false, `No routeId available for fetcher.Form()`) : void 0; | ||
| return createFetcherForm(fetcherKey, routeId); | ||
| }); | ||
| let [load] = React.useState(() => href => { | ||
| !router ? invariant(false, `No router available for fetcher.load()`) : void 0; | ||
| router.fetch(fetcherKey, href); | ||
| !router ? invariant(false, "No router available for fetcher.load()") : void 0; | ||
| !routeId ? invariant(false, "No routeId available for fetcher.load()") : void 0; | ||
| router.fetch(fetcherKey, routeId, href); | ||
| }); | ||
| let submit = useSubmitImpl(fetcherKey); | ||
| let submit = useSubmitImpl(fetcherKey, routeId); | ||
| let fetcher = router.getFetcher(fetcherKey); | ||
@@ -630,3 +641,3 @@ let fetcherWithComponents = React.useMemo(() => ({ | ||
| if (!router) { | ||
| console.warn("No fetcher available to clean up from useFetcher()"); | ||
| console.warn(`No fetcher available to clean up from useFetcher()`); | ||
| return; | ||
@@ -633,0 +644,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"react-router-dom.development.js","sources":["../dom.ts","../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_resetModuleScope,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n router.fetch(fetcherKey, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return <FormImpl {...props} ref={ref} fetcherKey={fetcherKey} />;\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => createFetcherForm(fetcherKey));\n let [load] = React.useState(() => (href: string) => {\n invariant(router, `No router available for fetcher.load()`);\n router.fetch(fetcherKey, href);\n });\n let submit = useSubmitImpl(fetcherKey);\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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\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","has","getAll","forEach","append","getFormSubmissionInfo","defaultAction","options","method","action","encType","formData","submissionTrigger","getAttribute","FormData","name","type","form","Error","set","protocol","host","window","location","url","URL","DataBrowserRouter","children","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","DataHashRouter","createHashRouter","BrowserRouter","basename","historyRef","React","useRef","current","createBrowserHistory","v5Compat","history","state","setState","useState","useLayoutEffect","listen","HashRouter","createHashHistory","HistoryRouter","displayName","Link","forwardRef","LinkWithRef","onClick","reloadDocument","replace","to","resetScroll","rest","ref","href","useHref","internalOnClick","useLinkClickHandler","handleClick","defaultPrevented","NavLink","NavLinkWithRef","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","path","useResolvedPath","match","useMatch","pathname","routerState","useContext","UNSAFE_DataRouterStateContext","nextLocation","navigation","nextPath","nextMatch","useMemo","matchPath","isPending","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","onSubmit","fetcherKey","forwardedRef","submit","useSubmitImpl","formMethod","formAction","useFormAction","submitHandler","preventDefault","submitter","nativeEvent","currentTarget","ScrollRestoration","getKey","storageKey","useScrollRestoration","replaceProp","navigate","useNavigate","useLocation","useCallback","createPath","useSearchParams","defaultInit","warning","defaultSearchParamsRef","search","setSearchParams","nextInit","navigateOptions","newSearchParams","useSubmit","router","UNSAFE_DataRouterContext","invariant","document","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","matches","slice","route","index","createFetcherForm","FetcherForm","fetcherId","useFetcher","String","load","fetcher","getFetcher","fetcherWithComponents","useEffect","console","warn","deleteFetcher","useFetchers","fetchers","values","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","restoreScrollPosition","resetScrollPosition","scrollRestoration","useBeforeUnload","scrollY","sessionStorage","setItem","JSON","stringify","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","scrollTo","hash","el","getElementById","scrollIntoView","callback","addEventListener","removeEventListener","cond","message"],"mappings":"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"} | ||
| {"version":3,"file":"react-router-dom.development.js","sources":["../dom.ts","../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n routeId,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n invariant(routeId != null, \"No routeId available for useFetcher()\");\n router.fetch(fetcherKey, routeId, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey, routeId]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return (\n <FormImpl\n {...props}\n ref={ref}\n fetcherKey={fetcherKey}\n routeId={routeId}\n />\n );\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let route = React.useContext(UNSAFE_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 = useSubmitImpl(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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\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","has","getAll","forEach","append","getFormSubmissionInfo","defaultAction","options","method","action","encType","formData","submissionTrigger","getAttribute","FormData","name","type","form","Error","set","protocol","host","window","location","url","URL","DataBrowserRouter","children","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","DataHashRouter","createHashRouter","BrowserRouter","basename","historyRef","React","useRef","current","createBrowserHistory","v5Compat","history","state","setState","useState","useLayoutEffect","listen","HashRouter","createHashHistory","HistoryRouter","displayName","Link","forwardRef","LinkWithRef","onClick","reloadDocument","replace","to","resetScroll","rest","ref","href","useHref","internalOnClick","useLinkClickHandler","handleClick","defaultPrevented","NavLink","NavLinkWithRef","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","path","useResolvedPath","match","useMatch","pathname","routerState","useContext","UNSAFE_DataRouterStateContext","nextLocation","navigation","nextPath","nextMatch","useMemo","matchPath","isPending","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","onSubmit","fetcherKey","routeId","forwardedRef","submit","useSubmitImpl","formMethod","formAction","useFormAction","submitHandler","preventDefault","submitter","nativeEvent","currentTarget","ScrollRestoration","getKey","storageKey","useScrollRestoration","replaceProp","navigate","useNavigate","useLocation","useCallback","createPath","useSearchParams","defaultInit","warning","defaultSearchParamsRef","search","setSearchParams","nextInit","navigateOptions","newSearchParams","useSubmit","router","UNSAFE_DataRouterContext","invariant","document","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","matches","slice","route","index","createFetcherForm","FetcherForm","fetcherId","useFetcher","length","id","String","load","fetcher","getFetcher","fetcherWithComponents","useEffect","console","warn","deleteFetcher","useFetchers","fetchers","values","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","restoreScrollPosition","resetScrollPosition","scrollRestoration","useBeforeUnload","scrollY","sessionStorage","setItem","JSON","stringify","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","scrollTo","hash","el","getElementById","scrollIntoView","callback","addEventListener","removeEventListener","cond","message"],"mappings":"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"} |
| /** | ||
| * React Router DOM v6.4.0-pre.6 | ||
| * React Router DOM v6.4.0-pre.7 | ||
| * | ||
@@ -11,3 +11,3 @@ * Copyright (c) Remix Software Inc. | ||
| */ | ||
| import*as e from"react";import{useRenderDataRouter as t,Router as n,useHref as o,createPath as r,useResolvedPath as a,useMatch as i,UNSAFE_DataRouterStateContext as u,useNavigate as l,useLocation as c,UNSAFE_DataRouterContext as s,UNSAFE_RouteContext as f}from"react-router";export{DataMemoryRouter,MemoryRouter,Navigate,NavigationType,Outlet,Route,Router,Routes,UNSAFE_DataRouterContext,UNSAFE_DataRouterStateContext,UNSAFE_LocationContext,UNSAFE_NavigationContext,UNSAFE_RouteContext,UNSAFE_resetModuleScope,createPath,createRoutesFromChildren,generatePath,isRouteErrorResponse,json,matchPath,matchRoutes,parsePath,redirect,renderMatches,resolvePath,useActionData,useHref,useInRouterContext,useLoaderData,useLocation,useMatch,useMatches,useNavigate,useNavigation,useNavigationType,useOutlet,useOutletContext,useParams,useRenderDataRouter,useResolvedPath,useRevalidator,useRouteError,useRouteLoaderData,useRoutes}from"react-router";import{createBrowserRouter as m,createHashRouter as d,createBrowserHistory as h,createHashHistory as p,matchPath as g,invariant as y}from"@remix-run/router";const w="application/x-www-form-urlencoded";function b(e){return null!=e&&"string"==typeof e.tagName}function v(e=""){return new URLSearchParams("string"==typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce(((t,n)=>{let o=e[n];return t.concat(Array.isArray(o)?o.map((e=>[n,e])):[[n,o]])}),[]))}function E(e,t,n){let o,r,a,i;if(b(u=e)&&"form"===u.tagName.toLowerCase()){let u=n.submissionTrigger;o=n.method||e.getAttribute("method")||"get",r=n.action||e.getAttribute("action")||t,a=n.encType||e.getAttribute("enctype")||w,i=new FormData(e),u&&u.name&&i.append(u.name,u.value)}else if(function(e){return b(e)&&"button"===e.tagName.toLowerCase()}(e)||function(e){return b(e)&&"input"===e.tagName.toLowerCase()}(e)&&("submit"===e.type||"image"===e.type)){let u=e.form;if(null==u)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');o=n.method||e.getAttribute("formmethod")||u.getAttribute("method")||"get",r=n.action||e.getAttribute("formaction")||u.getAttribute("action")||t,a=n.encType||e.getAttribute("formenctype")||u.getAttribute("enctype")||w,i=new FormData(u),e.name&&i.set(e.name,e.value)}else{if(b(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');if(o=n.method||"get",r=n.action||t,a=n.encType||w,e instanceof FormData)i=e;else if(i=new FormData,e instanceof URLSearchParams)for(let[t,n]of e)i.append(t,n);else if(null!=e)for(let t of Object.keys(e))i.append(t,e[t])}var u;let{protocol:l,host:c}=window.location;return{url:new URL(r,`${l}//${c}`),method:o,encType:a,formData:i}}function R({children:e,fallbackElement:n,hydrationData:o,routes:r,window:a}){return t({children:e,fallbackElement:n,routes:r,createRouter:e=>m({routes:e,hydrationData:o,window:a})})}function S({children:e,hydrationData:n,fallbackElement:o,routes:r,window:a}){return t({children:e,fallbackElement:o,routes:r,createRouter:e=>d({routes:e,hydrationData:n,window:a})})}function C({basename:t,children:o,window:r}){let a=e.useRef();null==a.current&&(a.current=h({window:r,v5Compat:!0}));let i=a.current,[u,l]=e.useState({action:i.action,location:i.location});return e.useLayoutEffect((()=>i.listen(l)),[i]),e.createElement(n,{basename:t,children:o,location:u.location,navigationType:u.action,navigator:i})}function A({basename:t,children:o,window:r}){let a=e.useRef();null==a.current&&(a.current=p({window:r,v5Compat:!0}));let i=a.current,[u,l]=e.useState({action:i.action,location:i.location});return e.useLayoutEffect((()=>i.listen(l)),[i]),e.createElement(n,{basename:t,children:o,location:u.location,navigationType:u.action,navigator:i})}function x({basename:t,children:o,history:r}){const[a,i]=e.useState({action:r.action,location:r.location});return e.useLayoutEffect((()=>r.listen(i)),[r]),e.createElement(n,{basename:t,children:o,location:a.location,navigationType:a.action,navigator:r})}const D=e.forwardRef((function({onClick:t,reloadDocument:n,replace:r,state:a,target:i,to:u,resetScroll:l,...c},s){let f=o(u),m=k(u,{replace:r,state:a,target:i,resetScroll:l});return e.createElement("a",Object.assign({},c,{href:f,onClick:function(e){t&&t(e),e.defaultPrevented||n||m(e)},ref:s,target:i}))})),N=e.forwardRef((function({"aria-current":t="page",caseSensitive:n=!1,className:o="",end:r=!1,style:l,to:c,children:s,...f},m){let d,h=a(c),p=i({path:h.pathname,end:r,caseSensitive:n}),y=e.useContext(u)?.navigation.location,w=a(y||""),b=null!=e.useMemo((()=>y?g({path:h.pathname,end:r,caseSensitive:n},w.pathname):null),[y,h.pathname,n,r,w.pathname]),v=null!=p,E=v?t:void 0;d="function"==typeof o?o({isActive:v,isPending:b}):[o,v?"active":null,b?"pending":null].filter(Boolean).join(" ");let R="function"==typeof l?l({isActive:v,isPending:b}):l;return e.createElement(D,Object.assign({},f,{"aria-current":E,className:d,ref:m,style:R,to:c}),"function"==typeof s?s({isActive:v,isPending:b}):s)})),L=e.forwardRef(((t,n)=>e.createElement(P,Object.assign({},t,{ref:n})))),P=e.forwardRef((({replace:t,method:n="get",action:o=".",onSubmit:r,fetcherKey:a,...i},u)=>{let l=O(a),c="get"===n.toLowerCase()?"get":"post",s=M(o);return e.createElement("form",Object.assign({ref:u,method:c,action:s,onSubmit:e=>{if(r&&r(e),e.defaultPrevented)return;e.preventDefault();let o=e.nativeEvent.submitter;l(o||e.currentTarget,{method:n,replace:t})}},i))}));function T({getKey:t,storageKey:n}){return function({getKey:t,storageKey:n}={}){let o=c(),r=e.useContext(s),a=e.useContext(u);(null==r||null==a)&&y(!1);let{restoreScrollPosition:i,resetScrollPosition:l}=a;e.useEffect((()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"})),[]),f=e.useCallback((()=>{if("idle"===a?.navigation.state){let e=(t?t(a.location,a.matches):null)||a.location.key;I[e]=window.scrollY}sessionStorage.setItem(n||"react-router-scroll-positions",JSON.stringify(I)),window.history.scrollRestoration="auto"}),[n,t,a.navigation.state,a.location,a.matches]),e.useEffect((()=>(window.addEventListener("beforeunload",f),()=>{window.removeEventListener("beforeunload",f)})),[f]),e.useLayoutEffect((()=>{try{let e=sessionStorage.getItem(n||"react-router-scroll-positions");e&&(I=JSON.parse(e))}catch(e){}}),[n]),e.useLayoutEffect((()=>{let e=r?.enableScrollRestoration(I,(()=>window.scrollY),t);return()=>e&&e()}),[r,t]),e.useLayoutEffect((()=>{if(!1!==i)if("number"!=typeof i){if(o.hash){let e=document.getElementById(o.hash.slice(1));if(e)return void e.scrollIntoView()}!1!==l&&window.scrollTo(0,0)}else window.scrollTo(0,i)}),[o,i,l]);var f}({getKey:t,storageKey:n}),null}function k(t,{target:n,replace:o,state:i,resetScroll:u}={}){let s=l(),f=c(),m=a(t);return e.useCallback((e=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(e,n)){e.preventDefault();let n=void 0!==o?o:r(f)===r(m);s(t,{replace:n,state:i,resetScroll:u})}}),[f,s,m,o,i,n,t,u])}function F(t){let n=e.useRef(v(t)),o=c(),r=e.useMemo((()=>function(e,t){let n=v(e);for(let o of t.keys())n.has(o)||t.getAll(o).forEach((e=>{n.append(o,e)}));return n}(o.search,n.current)),[o.search]),a=l(),i=e.useCallback(((e,t)=>{const n=v("function"==typeof e?e(r):e);a("?"+n,t)}),[a,r]);return[r,i]}function K(){return O()}function O(t){let n=e.useContext(s),o=M();return e.useCallback(((e,r={})=>{if(null==n&&y(!1),"undefined"==typeof document)throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.");let{method:a,encType:i,formData:u,url:l}=E(e,o,r),c=l.pathname+l.search,s={replace:null!=r.replace?!0===r.replace:"get"!==a,formData:u,formMethod:a,formEncType:i};t?n.fetch(t,c,s):n.navigate(c,s)}),[o,n,t])}function M(t="."){let n=e.useContext(f);n||y(!1);let[o]=n.matches.slice(-1),{pathname:r,search:i}=a(t);return"."===t&&o.route.index&&(i=i?i.replace(/^\?/,"?index&"):"?index"),r+i}let U=0;function j(){let t=e.useContext(s);t||y(!1);let[n]=e.useState((()=>String(++U))),[o]=e.useState((()=>function(t){return e.forwardRef(((n,o)=>e.createElement(P,Object.assign({},n,{ref:o,fetcherKey:t}))))}(n))),[r]=e.useState((()=>e=>{t||y(!1),t.fetch(n,e)})),a=O(n),i=t.getFetcher(n),u=e.useMemo((()=>({Form:o,submit:a,load:r,...i})),[i,o,a,r]);return e.useEffect((()=>()=>{t?t.deleteFetcher(n):console.warn("No fetcher available to clean up from useFetcher()")}),[t,n]),u}function _(){let t=e.useContext(u);return t||y(!1),[...t.fetchers.values()]}let I={};export{C as BrowserRouter,R as DataBrowserRouter,S as DataHashRouter,L as Form,A as HashRouter,D as Link,N as NavLink,T as ScrollRestoration,v as createSearchParams,x as unstable_HistoryRouter,j as useFetcher,_ as useFetchers,M as useFormAction,k as useLinkClickHandler,F as useSearchParams,K as useSubmit}; | ||
| import*as e from"react";import{useRenderDataRouter as t,Router as n,useHref as o,createPath as r,useResolvedPath as a,useMatch as i,UNSAFE_DataRouterStateContext as u,useNavigate as l,useLocation as c,UNSAFE_DataRouterContext as s,UNSAFE_RouteContext as f}from"react-router";export{DataMemoryRouter,MemoryRouter,Navigate,NavigationType,Outlet,Route,Router,Routes,UNSAFE_DataRouterContext,UNSAFE_DataRouterStateContext,UNSAFE_LocationContext,UNSAFE_NavigationContext,UNSAFE_RouteContext,createPath,createRoutesFromChildren,generatePath,isRouteErrorResponse,json,matchPath,matchRoutes,parsePath,redirect,renderMatches,resolvePath,useActionData,useHref,useInRouterContext,useLoaderData,useLocation,useMatch,useMatches,useNavigate,useNavigation,useNavigationType,useOutlet,useOutletContext,useParams,useRenderDataRouter,useResolvedPath,useRevalidator,useRouteError,useRouteLoaderData,useRoutes}from"react-router";import{createBrowserRouter as m,createHashRouter as d,createBrowserHistory as h,createHashHistory as p,matchPath as g,invariant as y}from"@remix-run/router";const w="application/x-www-form-urlencoded";function b(e){return null!=e&&"string"==typeof e.tagName}function v(e=""){return new URLSearchParams("string"==typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce(((t,n)=>{let o=e[n];return t.concat(Array.isArray(o)?o.map((e=>[n,e])):[[n,o]])}),[]))}function R(e,t,n){let o,r,a,i;if(b(u=e)&&"form"===u.tagName.toLowerCase()){let u=n.submissionTrigger;o=n.method||e.getAttribute("method")||"get",r=n.action||e.getAttribute("action")||t,a=n.encType||e.getAttribute("enctype")||w,i=new FormData(e),u&&u.name&&i.append(u.name,u.value)}else if(function(e){return b(e)&&"button"===e.tagName.toLowerCase()}(e)||function(e){return b(e)&&"input"===e.tagName.toLowerCase()}(e)&&("submit"===e.type||"image"===e.type)){let u=e.form;if(null==u)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');o=n.method||e.getAttribute("formmethod")||u.getAttribute("method")||"get",r=n.action||e.getAttribute("formaction")||u.getAttribute("action")||t,a=n.encType||e.getAttribute("formenctype")||u.getAttribute("enctype")||w,i=new FormData(u),e.name&&i.set(e.name,e.value)}else{if(b(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');if(o=n.method||"get",r=n.action||t,a=n.encType||w,e instanceof FormData)i=e;else if(i=new FormData,e instanceof URLSearchParams)for(let[t,n]of e)i.append(t,n);else if(null!=e)for(let t of Object.keys(e))i.append(t,e[t])}var u;let{protocol:l,host:c}=window.location;return{url:new URL(r,`${l}//${c}`),method:o,encType:a,formData:i}}function E({children:e,fallbackElement:n,hydrationData:o,routes:r,window:a}){return t({children:e,fallbackElement:n,routes:r,createRouter:e=>m({routes:e,hydrationData:o,window:a})})}function S({children:e,hydrationData:n,fallbackElement:o,routes:r,window:a}){return t({children:e,fallbackElement:o,routes:r,createRouter:e=>d({routes:e,hydrationData:n,window:a})})}function C({basename:t,children:o,window:r}){let a=e.useRef();null==a.current&&(a.current=h({window:r,v5Compat:!0}));let i=a.current,[u,l]=e.useState({action:i.action,location:i.location});return e.useLayoutEffect((()=>i.listen(l)),[i]),e.createElement(n,{basename:t,children:o,location:u.location,navigationType:u.action,navigator:i})}function A({basename:t,children:o,window:r}){let a=e.useRef();null==a.current&&(a.current=p({window:r,v5Compat:!0}));let i=a.current,[u,l]=e.useState({action:i.action,location:i.location});return e.useLayoutEffect((()=>i.listen(l)),[i]),e.createElement(n,{basename:t,children:o,location:u.location,navigationType:u.action,navigator:i})}function x({basename:t,children:o,history:r}){const[a,i]=e.useState({action:r.action,location:r.location});return e.useLayoutEffect((()=>r.listen(i)),[r]),e.createElement(n,{basename:t,children:o,location:a.location,navigationType:a.action,navigator:r})}const D=e.forwardRef((function({onClick:t,reloadDocument:n,replace:r,state:a,target:i,to:u,resetScroll:l,...c},s){let f=o(u),m=k(u,{replace:r,state:a,target:i,resetScroll:l});return e.createElement("a",Object.assign({},c,{href:f,onClick:function(e){t&&t(e),e.defaultPrevented||n||m(e)},ref:s,target:i}))})),L=e.forwardRef((function({"aria-current":t="page",caseSensitive:n=!1,className:o="",end:r=!1,style:l,to:c,children:s,...f},m){let d,h=a(c),p=i({path:h.pathname,end:r,caseSensitive:n}),y=e.useContext(u)?.navigation.location,w=a(y||""),b=null!=e.useMemo((()=>y?g({path:h.pathname,end:r,caseSensitive:n},w.pathname):null),[y,h.pathname,n,r,w.pathname]),v=null!=p,R=v?t:void 0;d="function"==typeof o?o({isActive:v,isPending:b}):[o,v?"active":null,b?"pending":null].filter(Boolean).join(" ");let E="function"==typeof l?l({isActive:v,isPending:b}):l;return e.createElement(D,Object.assign({},f,{"aria-current":R,className:d,ref:m,style:E,to:c}),"function"==typeof s?s({isActive:v,isPending:b}):s)})),N=e.forwardRef(((t,n)=>e.createElement(P,Object.assign({},t,{ref:n})))),P=e.forwardRef((({replace:t,method:n="get",action:o=".",onSubmit:r,fetcherKey:a,routeId:i,...u},l)=>{let c=O(a,i),s="get"===n.toLowerCase()?"get":"post",f=j(o);return e.createElement("form",Object.assign({ref:l,method:s,action:f,onSubmit:e=>{if(r&&r(e),e.defaultPrevented)return;e.preventDefault();let o=e.nativeEvent.submitter;c(o||e.currentTarget,{method:n,replace:t})}},u))}));function T({getKey:t,storageKey:n}){return function({getKey:t,storageKey:n}={}){let o=c(),r=e.useContext(s),a=e.useContext(u);(null==r||null==a)&&y(!1);let{restoreScrollPosition:i,resetScrollPosition:l}=a;e.useEffect((()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"})),[]),f=e.useCallback((()=>{if("idle"===a?.navigation.state){let e=(t?t(a.location,a.matches):null)||a.location.key;_[e]=window.scrollY}sessionStorage.setItem(n||"react-router-scroll-positions",JSON.stringify(_)),window.history.scrollRestoration="auto"}),[n,t,a.navigation.state,a.location,a.matches]),e.useEffect((()=>(window.addEventListener("beforeunload",f),()=>{window.removeEventListener("beforeunload",f)})),[f]),e.useLayoutEffect((()=>{try{let e=sessionStorage.getItem(n||"react-router-scroll-positions");e&&(_=JSON.parse(e))}catch(e){}}),[n]),e.useLayoutEffect((()=>{let e=r?.enableScrollRestoration(_,(()=>window.scrollY),t);return()=>e&&e()}),[r,t]),e.useLayoutEffect((()=>{if(!1!==i)if("number"!=typeof i){if(o.hash){let e=document.getElementById(o.hash.slice(1));if(e)return void e.scrollIntoView()}!1!==l&&window.scrollTo(0,0)}else window.scrollTo(0,i)}),[o,i,l]);var f}({getKey:t,storageKey:n}),null}function k(t,{target:n,replace:o,state:i,resetScroll:u}={}){let s=l(),f=c(),m=a(t);return e.useCallback((e=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(e,n)){e.preventDefault();let n=void 0!==o?o:r(f)===r(m);s(t,{replace:n,state:i,resetScroll:u})}}),[f,s,m,o,i,n,t,u])}function F(t){let n=e.useRef(v(t)),o=c(),r=e.useMemo((()=>function(e,t){let n=v(e);for(let o of t.keys())n.has(o)||t.getAll(o).forEach((e=>{n.append(o,e)}));return n}(o.search,n.current)),[o.search]),a=l(),i=e.useCallback(((e,t)=>{const n=v("function"==typeof e?e(r):e);a("?"+n,t)}),[a,r]);return[r,i]}function K(){return O()}function O(t,n){let o=e.useContext(s),r=j();return e.useCallback(((e,a={})=>{if(null==o&&y(!1),"undefined"==typeof document)throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.");let{method:i,encType:u,formData:l,url:c}=R(e,r,a),s=c.pathname+c.search,f={replace:null!=a.replace?!0===a.replace:"get"!==i,formData:l,formMethod:i,formEncType:u};t?(null==n&&y(!1),o.fetch(t,n,s,f)):o.navigate(s,f)}),[r,o,t,n])}function j(t="."){let n=e.useContext(f);n||y(!1);let[o]=n.matches.slice(-1),{pathname:r,search:i}=a(t);return"."===t&&o.route.index&&(i=i?i.replace(/^\?/,"?index&"):"?index"),r+i}let M=0;function U(){let t=e.useContext(s);t||y(!1);let n=e.useContext(f);n||y(!1);let o=n.matches[n.matches.length-1]?.route.id;null==o&&y(!1);let[r]=e.useState((()=>String(++M))),[a]=e.useState((()=>(o||y(!1),function(t,n){return e.forwardRef(((o,r)=>e.createElement(P,Object.assign({},o,{ref:r,fetcherKey:t,routeId:n}))))}(r,o)))),[i]=e.useState((()=>e=>{t||y(!1),o||y(!1),t.fetch(r,o,e)})),u=O(r,o),l=t.getFetcher(r),c=e.useMemo((()=>({Form:a,submit:u,load:i,...l})),[l,a,u,i]);return e.useEffect((()=>()=>{t?t.deleteFetcher(r):console.warn("No fetcher available to clean up from useFetcher()")}),[t,r]),c}function I(){let t=e.useContext(u);return t||y(!1),[...t.fetchers.values()]}let _={};export{C as BrowserRouter,E as DataBrowserRouter,S as DataHashRouter,N as Form,A as HashRouter,D as Link,L as NavLink,T as ScrollRestoration,v as createSearchParams,x as unstable_HistoryRouter,U as useFetcher,I as useFetchers,j as useFormAction,k as useLinkClickHandler,F as useSearchParams,K as useSubmit}; | ||
| //# sourceMappingURL=react-router-dom.production.min.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"react-router-dom.production.min.js","sources":["../dom.ts","../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_resetModuleScope,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n router.fetch(fetcherKey, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return <FormImpl {...props} ref={ref} fetcherKey={fetcherKey} />;\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => createFetcherForm(fetcherKey));\n let [load] = React.useState(() => (href: string) => {\n invariant(router, `No router available for fetcher.load()`);\n router.fetch(fetcherKey, href);\n });\n let submit = useSubmitImpl(fetcherKey);\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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n//#endregion\n"],"names":["defaultEncType","isHtmlElement","object","tagName","createSearchParams","init","URLSearchParams","Array","isArray","Object","keys","reduce","memo","key","value","concat","map","v","getFormSubmissionInfo","target","defaultAction","options","method","action","encType","formData","toLowerCase","submissionTrigger","getAttribute","FormData","name","append","isButtonElement","isInputElement","type","form","Error","set","protocol","host","window","location","url","URL","DataBrowserRouter","children","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","DataHashRouter","createHashRouter","BrowserRouter","basename","historyRef","React","useRef","current","createBrowserHistory","v5Compat","history","state","setState","useState","useLayoutEffect","listen","Router","navigationType","navigator","HashRouter","createHashHistory","HistoryRouter","Link","forwardRef","onClick","reloadDocument","replace","to","resetScroll","rest","ref","href","useHref","internalOnClick","useLinkClickHandler","createElement","assign","event","defaultPrevented","NavLink","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","path","useResolvedPath","match","useMatch","pathname","nextLocation","useContext","UNSAFE_DataRouterStateContext","navigation","nextPath","isPending","useMemo","matchPath","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","onSubmit","fetcherKey","forwardedRef","submit","useSubmitImpl","formMethod","formAction","useFormAction","preventDefault","submitter","nativeEvent","currentTarget","ScrollRestoration","getKey","storageKey","useLocation","router","UNSAFE_DataRouterContext","invariant","restoreScrollPosition","resetScrollPosition","useEffect","scrollRestoration","callback","useCallback","matches","savedScrollPositions","scrollY","sessionStorage","setItem","JSON","stringify","addEventListener","removeEventListener","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","hash","el","document","getElementById","slice","scrollIntoView","scrollTo","useScrollRestoration","replaceProp","navigate","useNavigate","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","shouldProcessLinkClick","createPath","useSearchParams","defaultInit","defaultSearchParamsRef","searchParams","locationSearch","defaultSearchParams","has","getAll","forEach","getSearchParamsForLocation","search","setSearchParams","nextInit","navigateOptions","newSearchParams","useSubmit","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","route","index","fetcherId","useFetcher","String","createFetcherForm","load","fetcher","getFetcher","fetcherWithComponents","deleteFetcher","console","warn","useFetchers","fetchers","values"],"mappings":"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"} | ||
| {"version":3,"file":"react-router-dom.production.min.js","sources":["../dom.ts","../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n routeId,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n invariant(routeId != null, \"No routeId available for useFetcher()\");\n router.fetch(fetcherKey, routeId, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey, routeId]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return (\n <FormImpl\n {...props}\n ref={ref}\n fetcherKey={fetcherKey}\n routeId={routeId}\n />\n );\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let route = React.useContext(UNSAFE_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 = useSubmitImpl(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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n//#endregion\n"],"names":["defaultEncType","isHtmlElement","object","tagName","createSearchParams","init","URLSearchParams","Array","isArray","Object","keys","reduce","memo","key","value","concat","map","v","getFormSubmissionInfo","target","defaultAction","options","method","action","encType","formData","toLowerCase","submissionTrigger","getAttribute","FormData","name","append","isButtonElement","isInputElement","type","form","Error","set","protocol","host","window","location","url","URL","DataBrowserRouter","children","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","DataHashRouter","createHashRouter","BrowserRouter","basename","historyRef","React","useRef","current","createBrowserHistory","v5Compat","history","state","setState","useState","useLayoutEffect","listen","Router","navigationType","navigator","HashRouter","createHashHistory","HistoryRouter","Link","forwardRef","onClick","reloadDocument","replace","to","resetScroll","rest","ref","href","useHref","internalOnClick","useLinkClickHandler","createElement","assign","event","defaultPrevented","NavLink","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","path","useResolvedPath","match","useMatch","pathname","nextLocation","useContext","UNSAFE_DataRouterStateContext","navigation","nextPath","isPending","useMemo","matchPath","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","onSubmit","fetcherKey","routeId","forwardedRef","submit","useSubmitImpl","formMethod","formAction","useFormAction","preventDefault","submitter","nativeEvent","currentTarget","ScrollRestoration","getKey","storageKey","useLocation","router","UNSAFE_DataRouterContext","invariant","restoreScrollPosition","resetScrollPosition","useEffect","scrollRestoration","callback","useCallback","matches","savedScrollPositions","scrollY","sessionStorage","setItem","JSON","stringify","addEventListener","removeEventListener","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","hash","el","document","getElementById","slice","scrollIntoView","scrollTo","useScrollRestoration","replaceProp","navigate","useNavigate","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","shouldProcessLinkClick","createPath","useSearchParams","defaultInit","defaultSearchParamsRef","searchParams","locationSearch","defaultSearchParams","has","getAll","forEach","getSearchParamsForLocation","search","setSearchParams","nextInit","navigateOptions","newSearchParams","useSubmit","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","route","index","fetcherId","useFetcher","length","id","String","createFetcherForm","load","fetcher","getFetcher","fetcherWithComponents","deleteFetcher","console","warn","useFetchers","fetchers","values"],"mappings":"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"} |
+16
-15
@@ -10,17 +10,17 @@ 'use strict'; | ||
| function _interopNamespace(e) { | ||
| if (e && e.__esModule) return e; | ||
| var n = Object.create(null); | ||
| if (e) { | ||
| Object.keys(e).forEach(function (k) { | ||
| if (k !== 'default') { | ||
| var d = Object.getOwnPropertyDescriptor(e, k); | ||
| Object.defineProperty(n, k, d.get ? d : { | ||
| enumerable: true, | ||
| get: function () { return e[k]; } | ||
| if (e && e.__esModule) return e; | ||
| var n = Object.create(null); | ||
| if (e) { | ||
| Object.keys(e).forEach(function (k) { | ||
| if (k !== 'default') { | ||
| var d = Object.getOwnPropertyDescriptor(e, k); | ||
| Object.defineProperty(n, k, d.get ? d : { | ||
| enumerable: true, | ||
| get: function () { return e[k]; } | ||
| }); | ||
| } | ||
| }); | ||
| } | ||
| }); | ||
| } | ||
| n["default"] = e; | ||
| return Object.freeze(n); | ||
| } | ||
| n["default"] = e; | ||
| return Object.freeze(n); | ||
| } | ||
@@ -34,2 +34,3 @@ | ||
| */ | ||
| function StaticRouter({ | ||
@@ -62,3 +63,2 @@ basename, | ||
| } | ||
| /** | ||
@@ -68,2 +68,3 @@ * A Data Router that may not navigate to any other location. This is useful | ||
| */ | ||
| function DataStaticRouter({ | ||
@@ -70,0 +71,0 @@ data, |
+1
-2
@@ -9,3 +9,2 @@ import * as React from 'react'; | ||
| */ | ||
| function StaticRouter({ | ||
@@ -38,2 +37,3 @@ basename, | ||
| } | ||
| /** | ||
@@ -43,3 +43,2 @@ * A Data Router that may not navigate to any other location. This is useful | ||
| */ | ||
| function DataStaticRouter({ | ||
@@ -46,0 +45,0 @@ data, |
| /** | ||
| * React Router DOM v6.4.0-pre.6 | ||
| * React Router DOM v6.4.0-pre.7 | ||
| * | ||
@@ -210,3 +210,3 @@ * Copyright (c) Remix Software Inc. | ||
| _excluded2 = ["aria-current", "caseSensitive", "className", "end", "style", "to", "children"], | ||
| _excluded3 = ["replace", "method", "action", "onSubmit", "fetcherKey"]; | ||
| _excluded3 = ["replace", "method", "action", "onSubmit", "fetcherKey", "routeId"]; | ||
| //////////////////////////////////////////////////////////////////////////////// | ||
@@ -489,7 +489,8 @@ //#region Components | ||
| onSubmit, | ||
| fetcherKey | ||
| fetcherKey, | ||
| routeId | ||
| } = _ref8, | ||
| props = _objectWithoutPropertiesLoose(_ref8, _excluded3); | ||
| let submit = useSubmitImpl(fetcherKey); | ||
| let submit = useSubmitImpl(fetcherKey, routeId); | ||
| let formMethod = method.toLowerCase() === "get" ? "get" : "post"; | ||
@@ -601,3 +602,3 @@ let formAction = useFormAction(action); | ||
| function useSubmitImpl(fetcherKey) { | ||
| function useSubmitImpl(fetcherKey, routeId) { | ||
| let router$1 = React__namespace.useContext(reactRouter.UNSAFE_DataRouterContext); | ||
@@ -633,7 +634,8 @@ let defaultAction = useFormAction(); | ||
| if (fetcherKey) { | ||
| router$1.fetch(fetcherKey, href, opts); | ||
| !(routeId != null) ? router.invariant(false, "No routeId available for useFetcher()") : void 0; | ||
| router$1.fetch(fetcherKey, routeId, href, opts); | ||
| } else { | ||
| router$1.navigate(href, opts); | ||
| } | ||
| }, [defaultAction, router$1, fetcherKey]); | ||
| }, [defaultAction, router$1, fetcherKey, routeId]); | ||
| } | ||
@@ -661,7 +663,8 @@ | ||
| function createFetcherForm(fetcherKey) { | ||
| function createFetcherForm(fetcherKey, routeId) { | ||
| let FetcherForm = /*#__PURE__*/React__namespace.forwardRef((props, ref) => { | ||
| return /*#__PURE__*/React__namespace.createElement(FormImpl, _extends({}, props, { | ||
| ref: ref, | ||
| fetcherKey: fetcherKey | ||
| fetcherKey: fetcherKey, | ||
| routeId: routeId | ||
| })); | ||
@@ -684,11 +687,21 @@ }); | ||
| function useFetcher() { | ||
| var _route$matches; | ||
| let router$1 = React__namespace.useContext(reactRouter.UNSAFE_DataRouterContext); | ||
| !router$1 ? router.invariant(false, "useFetcher must be used within a DataRouter") : void 0; | ||
| let route = React__namespace.useContext(reactRouter.UNSAFE_RouteContext); | ||
| !route ? router.invariant(false, "useFetcher must be used inside a RouteContext") : void 0; | ||
| let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id; | ||
| !(routeId != null) ? router.invariant(false, "useFetcher can only be used on routes that contain a unique \"id\"") : void 0; | ||
| let [fetcherKey] = React__namespace.useState(() => String(++fetcherId)); | ||
| let [Form] = React__namespace.useState(() => createFetcherForm(fetcherKey)); | ||
| let [Form] = React__namespace.useState(() => { | ||
| !routeId ? router.invariant(false, "No routeId available for fetcher.Form()") : void 0; | ||
| return createFetcherForm(fetcherKey, routeId); | ||
| }); | ||
| let [load] = React__namespace.useState(() => href => { | ||
| !router$1 ? router.invariant(false, "No router available for fetcher.load()") : void 0; | ||
| router$1.fetch(fetcherKey, href); | ||
| !routeId ? router.invariant(false, "No routeId available for fetcher.load()") : void 0; | ||
| router$1.fetch(fetcherKey, routeId, href); | ||
| }); | ||
| let submit = useSubmitImpl(fetcherKey); | ||
| let submit = useSubmitImpl(fetcherKey, routeId); | ||
| let fetcher = router$1.getFetcher(fetcherKey); | ||
@@ -891,6 +904,2 @@ let fetcherWithComponents = React__namespace.useMemo(() => _extends({ | ||
| }); | ||
| Object.defineProperty(exports, 'UNSAFE_resetModuleScope', { | ||
| enumerable: true, | ||
| get: function () { return reactRouter.UNSAFE_resetModuleScope; } | ||
| }); | ||
| Object.defineProperty(exports, 'createPath', { | ||
@@ -897,0 +906,0 @@ enumerable: true, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"react-router-dom.development.js","sources":["../../dom.ts","../../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_resetModuleScope,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n router.fetch(fetcherKey, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return <FormImpl {...props} ref={ref} fetcherKey={fetcherKey} />;\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => createFetcherForm(fetcherKey));\n let [load] = React.useState(() => (href: string) => {\n invariant(router, `No router available for fetcher.load()`);\n router.fetch(fetcherKey, href);\n });\n let submit = useSubmitImpl(fetcherKey);\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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\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","has","getAll","forEach","append","getFormSubmissionInfo","defaultAction","options","method","action","encType","formData","submissionTrigger","getAttribute","FormData","name","type","form","Error","set","protocol","host","window","location","url","URL","DataBrowserRouter","children","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","DataHashRouter","createHashRouter","BrowserRouter","basename","historyRef","React","useRef","current","createBrowserHistory","v5Compat","history","state","setState","useState","useLayoutEffect","listen","Router","HashRouter","createHashHistory","HistoryRouter","displayName","Link","forwardRef","LinkWithRef","ref","onClick","reloadDocument","replace","to","resetScroll","rest","href","useHref","internalOnClick","useLinkClickHandler","handleClick","defaultPrevented","NavLink","NavLinkWithRef","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","path","useResolvedPath","match","useMatch","pathname","routerState","useContext","UNSAFE_DataRouterStateContext","nextLocation","navigation","nextPath","nextMatch","useMemo","matchPath","isPending","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","forwardedRef","onSubmit","fetcherKey","submit","useSubmitImpl","formMethod","formAction","useFormAction","submitHandler","preventDefault","submitter","nativeEvent","currentTarget","ScrollRestoration","getKey","storageKey","useScrollRestoration","replaceProp","navigate","useNavigate","useLocation","useCallback","createPath","useSearchParams","defaultInit","warning","defaultSearchParamsRef","search","setSearchParams","nextInit","navigateOptions","newSearchParams","useSubmit","router","UNSAFE_DataRouterContext","invariant","document","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","matches","slice","route","index","createFetcherForm","FetcherForm","fetcherId","useFetcher","String","load","fetcher","getFetcher","fetcherWithComponents","useEffect","console","warn","deleteFetcher","useFetchers","fetchers","values","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","restoreScrollPosition","resetScrollPosition","scrollRestoration","useBeforeUnload","scrollY","sessionStorage","setItem","JSON","stringify","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","scrollTo","hash","el","getElementById","scrollIntoView","callback","addEventListener","removeEventListener","cond","message"],"mappings":"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"} | ||
| {"version":3,"file":"react-router-dom.development.js","sources":["../../dom.ts","../../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n routeId,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n invariant(routeId != null, \"No routeId available for useFetcher()\");\n router.fetch(fetcherKey, routeId, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey, routeId]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return (\n <FormImpl\n {...props}\n ref={ref}\n fetcherKey={fetcherKey}\n routeId={routeId}\n />\n );\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let route = React.useContext(UNSAFE_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 = useSubmitImpl(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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\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","has","getAll","forEach","append","getFormSubmissionInfo","defaultAction","options","method","action","encType","formData","submissionTrigger","getAttribute","FormData","name","type","form","Error","set","protocol","host","window","location","url","URL","DataBrowserRouter","children","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","DataHashRouter","createHashRouter","BrowserRouter","basename","historyRef","React","useRef","current","createBrowserHistory","v5Compat","history","state","setState","useState","useLayoutEffect","listen","Router","HashRouter","createHashHistory","HistoryRouter","displayName","Link","forwardRef","LinkWithRef","ref","onClick","reloadDocument","replace","to","resetScroll","rest","href","useHref","internalOnClick","useLinkClickHandler","handleClick","defaultPrevented","NavLink","NavLinkWithRef","ariaCurrentProp","caseSensitive","className","classNameProp","end","style","styleProp","path","useResolvedPath","match","useMatch","pathname","routerState","useContext","UNSAFE_DataRouterStateContext","nextLocation","navigation","nextPath","nextMatch","useMemo","matchPath","isPending","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","forwardedRef","onSubmit","fetcherKey","routeId","submit","useSubmitImpl","formMethod","formAction","useFormAction","submitHandler","preventDefault","submitter","nativeEvent","currentTarget","ScrollRestoration","getKey","storageKey","useScrollRestoration","replaceProp","navigate","useNavigate","useLocation","useCallback","createPath","useSearchParams","defaultInit","warning","defaultSearchParamsRef","search","setSearchParams","nextInit","navigateOptions","newSearchParams","useSubmit","router","UNSAFE_DataRouterContext","invariant","document","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","matches","slice","route","index","createFetcherForm","FetcherForm","fetcherId","useFetcher","length","id","String","load","fetcher","getFetcher","fetcherWithComponents","useEffect","console","warn","deleteFetcher","useFetchers","fetchers","values","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","restoreScrollPosition","resetScrollPosition","scrollRestoration","useBeforeUnload","scrollY","sessionStorage","setItem","JSON","stringify","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","scrollTo","hash","el","getElementById","scrollIntoView","callback","addEventListener","removeEventListener","cond","message"],"mappings":"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"} |
| /** | ||
| * React Router DOM v6.4.0-pre.6 | ||
| * React Router DOM v6.4.0-pre.7 | ||
| * | ||
@@ -11,3 +11,3 @@ * Copyright (c) Remix Software Inc. | ||
| */ | ||
| !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-router"),require("@remix-run/router")):"function"==typeof define&&define.amd?define(["exports","react","react-router","@remix-run/router"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactRouterDOM={},e.React,e.ReactRouter,e.Router)}(this,(function(e,t,r,n){"use strict";function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=o(t);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},u.apply(this,arguments)}function i(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}const c="get",l="application/x-www-form-urlencoded";function s(e){return null!=e&&"string"==typeof e.tagName}function f(e){return void 0===e&&(e=""),new URLSearchParams("string"==typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce(((t,r)=>{let n=e[r];return t.concat(Array.isArray(n)?n.map((e=>[r,e])):[[r,n]])}),[]))}function d(e,t,r){let n,o,a,u;if(s(i=e)&&"form"===i.tagName.toLowerCase()){let i=r.submissionTrigger;n=r.method||e.getAttribute("method")||c,o=r.action||e.getAttribute("action")||t,a=r.encType||e.getAttribute("enctype")||l,u=new FormData(e),i&&i.name&&u.append(i.name,i.value)}else if(function(e){return s(e)&&"button"===e.tagName.toLowerCase()}(e)||function(e){return s(e)&&"input"===e.tagName.toLowerCase()}(e)&&("submit"===e.type||"image"===e.type)){let i=e.form;if(null==i)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');n=r.method||e.getAttribute("formmethod")||i.getAttribute("method")||c,o=r.action||e.getAttribute("formaction")||i.getAttribute("action")||t,a=r.encType||e.getAttribute("formenctype")||i.getAttribute("enctype")||l,u=new FormData(i),e.name&&u.set(e.name,e.value)}else{if(s(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');if(n=r.method||c,o=r.action||t,a=r.encType||l,e instanceof FormData)u=e;else if(u=new FormData,e instanceof URLSearchParams)for(let[t,r]of e)u.append(t,r);else if(null!=e)for(let t of Object.keys(e))u.append(t,e[t])}var i;let{protocol:f,host:d}=window.location;return{url:new URL(o,f+"//"+d),method:n,encType:a,formData:u}}const m=["onClick","reloadDocument","replace","state","target","to","resetScroll"],b=["aria-current","caseSensitive","className","end","style","to","children"],p=["replace","method","action","onSubmit","fetcherKey"];const y=a.forwardRef((function(e,t){let{onClick:n,reloadDocument:o,replace:c,state:l,target:s,to:f,resetScroll:d}=e,b=i(e,m),p=r.useHref(f),y=v(f,{replace:c,state:l,target:s,resetScroll:d});return a.createElement("a",u({},b,{href:p,onClick:function(e){n&&n(e),e.defaultPrevented||o||y(e)},ref:t,target:s}))})),g=a.forwardRef((function(e,t){let o,{"aria-current":c="page",caseSensitive:l=!1,className:s="",end:f=!1,style:d,to:m,children:p}=e,g=i(e,b),h=r.useResolvedPath(m),R=r.useMatch({path:h.pathname,end:f,caseSensitive:l}),v=a.useContext(r.UNSAFE_DataRouterStateContext),P=null==v?void 0:v.navigation.location,w=r.useResolvedPath(P||""),O=null!=a.useMemo((()=>P?n.matchPath({path:h.pathname,end:f,caseSensitive:l},w.pathname):null),[P,h.pathname,l,f,w.pathname]),j=null!=R,S=j?c:void 0;o="function"==typeof s?s({isActive:j,isPending:O}):[s,j?"active":null,O?"pending":null].filter(Boolean).join(" ");let E="function"==typeof d?d({isActive:j,isPending:O}):d;return a.createElement(y,u({},g,{"aria-current":S,className:o,ref:t,style:E,to:m}),"function"==typeof p?p({isActive:j,isPending:O}):p)})),h=a.forwardRef(((e,t)=>a.createElement(R,u({},e,{ref:t})))),R=a.forwardRef(((e,t)=>{let{replace:r,method:n=c,action:o=".",onSubmit:l,fetcherKey:s}=e,f=i(e,p),d=P(s),m="get"===n.toLowerCase()?"get":"post",b=w(o);return a.createElement("form",u({ref:t,method:m,action:b,onSubmit:e=>{if(l&&l(e),e.defaultPrevented)return;e.preventDefault();let t=e.nativeEvent.submitter;d(t||e.currentTarget,{method:n,replace:r})}},f))}));function v(e,t){let{target:n,replace:o,state:u,resetScroll:i}=void 0===t?{}:t,c=r.useNavigate(),l=r.useLocation(),s=r.useResolvedPath(e);return a.useCallback((t=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(t,n)){t.preventDefault();let n=void 0!==o?o:r.createPath(l)===r.createPath(s);c(e,{replace:n,state:u,resetScroll:i})}}),[l,c,s,o,u,n,e,i])}function P(e){let t=a.useContext(r.UNSAFE_DataRouterContext),o=w();return a.useCallback((function(r,a){if(void 0===a&&(a={}),null==t&&n.invariant(!1),"undefined"==typeof document)throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.");let{method:u,encType:i,formData:c,url:l}=d(r,o,a),s=l.pathname+l.search,f={replace:null!=a.replace?!0===a.replace:"get"!==u,formData:c,formMethod:u,formEncType:i};e?t.fetch(e,s,f):t.navigate(s,f)}),[o,t,e])}function w(e){void 0===e&&(e=".");let t=a.useContext(r.UNSAFE_RouteContext);t||n.invariant(!1);let[o]=t.matches.slice(-1),{pathname:u,search:i}=r.useResolvedPath(e);return"."===e&&o.route.index&&(i=i?i.replace(/^\?/,"?index&"):"?index"),u+i}let O=0;const j="react-router-scroll-positions";let S={};Object.defineProperty(e,"DataMemoryRouter",{enumerable:!0,get:function(){return r.DataMemoryRouter}}),Object.defineProperty(e,"MemoryRouter",{enumerable:!0,get:function(){return r.MemoryRouter}}),Object.defineProperty(e,"Navigate",{enumerable:!0,get:function(){return r.Navigate}}),Object.defineProperty(e,"NavigationType",{enumerable:!0,get:function(){return r.NavigationType}}),Object.defineProperty(e,"Outlet",{enumerable:!0,get:function(){return r.Outlet}}),Object.defineProperty(e,"Route",{enumerable:!0,get:function(){return r.Route}}),Object.defineProperty(e,"Router",{enumerable:!0,get:function(){return r.Router}}),Object.defineProperty(e,"Routes",{enumerable:!0,get:function(){return r.Routes}}),Object.defineProperty(e,"UNSAFE_DataRouterContext",{enumerable:!0,get:function(){return r.UNSAFE_DataRouterContext}}),Object.defineProperty(e,"UNSAFE_DataRouterStateContext",{enumerable:!0,get:function(){return r.UNSAFE_DataRouterStateContext}}),Object.defineProperty(e,"UNSAFE_LocationContext",{enumerable:!0,get:function(){return r.UNSAFE_LocationContext}}),Object.defineProperty(e,"UNSAFE_NavigationContext",{enumerable:!0,get:function(){return r.UNSAFE_NavigationContext}}),Object.defineProperty(e,"UNSAFE_RouteContext",{enumerable:!0,get:function(){return r.UNSAFE_RouteContext}}),Object.defineProperty(e,"UNSAFE_resetModuleScope",{enumerable:!0,get:function(){return r.UNSAFE_resetModuleScope}}),Object.defineProperty(e,"createPath",{enumerable:!0,get:function(){return r.createPath}}),Object.defineProperty(e,"createRoutesFromChildren",{enumerable:!0,get:function(){return r.createRoutesFromChildren}}),Object.defineProperty(e,"generatePath",{enumerable:!0,get:function(){return r.generatePath}}),Object.defineProperty(e,"isRouteErrorResponse",{enumerable:!0,get:function(){return r.isRouteErrorResponse}}),Object.defineProperty(e,"json",{enumerable:!0,get:function(){return r.json}}),Object.defineProperty(e,"matchPath",{enumerable:!0,get:function(){return r.matchPath}}),Object.defineProperty(e,"matchRoutes",{enumerable:!0,get:function(){return r.matchRoutes}}),Object.defineProperty(e,"parsePath",{enumerable:!0,get:function(){return r.parsePath}}),Object.defineProperty(e,"redirect",{enumerable:!0,get:function(){return r.redirect}}),Object.defineProperty(e,"renderMatches",{enumerable:!0,get:function(){return r.renderMatches}}),Object.defineProperty(e,"resolvePath",{enumerable:!0,get:function(){return r.resolvePath}}),Object.defineProperty(e,"useActionData",{enumerable:!0,get:function(){return r.useActionData}}),Object.defineProperty(e,"useHref",{enumerable:!0,get:function(){return r.useHref}}),Object.defineProperty(e,"useInRouterContext",{enumerable:!0,get:function(){return r.useInRouterContext}}),Object.defineProperty(e,"useLoaderData",{enumerable:!0,get:function(){return r.useLoaderData}}),Object.defineProperty(e,"useLocation",{enumerable:!0,get:function(){return r.useLocation}}),Object.defineProperty(e,"useMatch",{enumerable:!0,get:function(){return r.useMatch}}),Object.defineProperty(e,"useMatches",{enumerable:!0,get:function(){return r.useMatches}}),Object.defineProperty(e,"useNavigate",{enumerable:!0,get:function(){return r.useNavigate}}),Object.defineProperty(e,"useNavigation",{enumerable:!0,get:function(){return r.useNavigation}}),Object.defineProperty(e,"useNavigationType",{enumerable:!0,get:function(){return r.useNavigationType}}),Object.defineProperty(e,"useOutlet",{enumerable:!0,get:function(){return r.useOutlet}}),Object.defineProperty(e,"useOutletContext",{enumerable:!0,get:function(){return r.useOutletContext}}),Object.defineProperty(e,"useParams",{enumerable:!0,get:function(){return r.useParams}}),Object.defineProperty(e,"useRenderDataRouter",{enumerable:!0,get:function(){return r.useRenderDataRouter}}),Object.defineProperty(e,"useResolvedPath",{enumerable:!0,get:function(){return r.useResolvedPath}}),Object.defineProperty(e,"useRevalidator",{enumerable:!0,get:function(){return r.useRevalidator}}),Object.defineProperty(e,"useRouteError",{enumerable:!0,get:function(){return r.useRouteError}}),Object.defineProperty(e,"useRouteLoaderData",{enumerable:!0,get:function(){return r.useRouteLoaderData}}),Object.defineProperty(e,"useRoutes",{enumerable:!0,get:function(){return r.useRoutes}}),e.BrowserRouter=function(e){let{basename:t,children:o,window:u}=e,i=a.useRef();null==i.current&&(i.current=n.createBrowserHistory({window:u,v5Compat:!0}));let c=i.current,[l,s]=a.useState({action:c.action,location:c.location});return a.useLayoutEffect((()=>c.listen(s)),[c]),a.createElement(r.Router,{basename:t,children:o,location:l.location,navigationType:l.action,navigator:c})},e.DataBrowserRouter=function(e){let{children:t,fallbackElement:o,hydrationData:a,routes:u,window:i}=e;return r.useRenderDataRouter({children:t,fallbackElement:o,routes:u,createRouter:e=>n.createBrowserRouter({routes:e,hydrationData:a,window:i})})},e.DataHashRouter=function(e){let{children:t,hydrationData:o,fallbackElement:a,routes:u,window:i}=e;return r.useRenderDataRouter({children:t,fallbackElement:a,routes:u,createRouter:e=>n.createHashRouter({routes:e,hydrationData:o,window:i})})},e.Form=h,e.HashRouter=function(e){let{basename:t,children:o,window:u}=e,i=a.useRef();null==i.current&&(i.current=n.createHashHistory({window:u,v5Compat:!0}));let c=i.current,[l,s]=a.useState({action:c.action,location:c.location});return a.useLayoutEffect((()=>c.listen(s)),[c]),a.createElement(r.Router,{basename:t,children:o,location:l.location,navigationType:l.action,navigator:c})},e.Link=y,e.NavLink=g,e.ScrollRestoration=function(e){let{getKey:t,storageKey:o}=e;return function(e){let{getKey:t,storageKey:o}=void 0===e?{}:e,u=r.useLocation(),i=a.useContext(r.UNSAFE_DataRouterContext),c=a.useContext(r.UNSAFE_DataRouterStateContext);(null==i||null==c)&&n.invariant(!1);let{restoreScrollPosition:l,resetScrollPosition:s}=c;a.useEffect((()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"})),[]),f=a.useCallback((()=>{if("idle"===(null==c?void 0:c.navigation.state)){let e=(t?t(c.location,c.matches):null)||c.location.key;S[e]=window.scrollY}sessionStorage.setItem(o||j,JSON.stringify(S)),window.history.scrollRestoration="auto"}),[o,t,c.navigation.state,c.location,c.matches]),a.useEffect((()=>(window.addEventListener("beforeunload",f),()=>{window.removeEventListener("beforeunload",f)})),[f]),a.useLayoutEffect((()=>{try{let e=sessionStorage.getItem(o||j);e&&(S=JSON.parse(e))}catch(e){}}),[o]),a.useLayoutEffect((()=>{let e=null==i?void 0:i.enableScrollRestoration(S,(()=>window.scrollY),t);return()=>e&&e()}),[i,t]),a.useLayoutEffect((()=>{if(!1!==l)if("number"!=typeof l){if(u.hash){let e=document.getElementById(u.hash.slice(1));if(e)return void e.scrollIntoView()}!1!==s&&window.scrollTo(0,0)}else window.scrollTo(0,l)}),[u,l,s]);var f}({getKey:t,storageKey:o}),null},e.createSearchParams=f,e.unstable_HistoryRouter=function(e){let{basename:t,children:n,history:o}=e;const[u,i]=a.useState({action:o.action,location:o.location});return a.useLayoutEffect((()=>o.listen(i)),[o]),a.createElement(r.Router,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:o})},e.useFetcher=function(){let e=a.useContext(r.UNSAFE_DataRouterContext);e||n.invariant(!1);let[t]=a.useState((()=>String(++O))),[o]=a.useState((()=>function(e){return a.forwardRef(((t,r)=>a.createElement(R,u({},t,{ref:r,fetcherKey:e}))))}(t))),[i]=a.useState((()=>r=>{e||n.invariant(!1),e.fetch(t,r)})),c=P(t),l=e.getFetcher(t),s=a.useMemo((()=>u({Form:o,submit:c,load:i},l)),[l,o,c,i]);return a.useEffect((()=>()=>{e?e.deleteFetcher(t):console.warn("No fetcher available to clean up from useFetcher()")}),[e,t]),s},e.useFetchers=function(){let e=a.useContext(r.UNSAFE_DataRouterStateContext);return e||n.invariant(!1),[...e.fetchers.values()]},e.useFormAction=w,e.useLinkClickHandler=v,e.useSearchParams=function(e){let t=a.useRef(f(e)),n=r.useLocation(),o=a.useMemo((()=>function(e,t){let r=f(e);for(let e of t.keys())r.has(e)||t.getAll(e).forEach((t=>{r.append(e,t)}));return r}(n.search,t.current)),[n.search]),u=r.useNavigate(),i=a.useCallback(((e,t)=>{const r=f("function"==typeof e?e(o):e);u("?"+r,t)}),[u,o]);return[o,i]},e.useSubmit=function(){return P()},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
| !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-router"),require("@remix-run/router")):"function"==typeof define&&define.amd?define(["exports","react","react-router","@remix-run/router"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactRouterDOM={},e.React,e.ReactRouter,e.Router)}(this,(function(e,t,r,n){"use strict";function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=o(t);function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},u.apply(this,arguments)}function i(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}const c="get",l="application/x-www-form-urlencoded";function s(e){return null!=e&&"string"==typeof e.tagName}function f(e){return void 0===e&&(e=""),new URLSearchParams("string"==typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce(((t,r)=>{let n=e[r];return t.concat(Array.isArray(n)?n.map((e=>[r,e])):[[r,n]])}),[]))}function d(e,t,r){let n,o,a,u;if(s(i=e)&&"form"===i.tagName.toLowerCase()){let i=r.submissionTrigger;n=r.method||e.getAttribute("method")||c,o=r.action||e.getAttribute("action")||t,a=r.encType||e.getAttribute("enctype")||l,u=new FormData(e),i&&i.name&&u.append(i.name,i.value)}else if(function(e){return s(e)&&"button"===e.tagName.toLowerCase()}(e)||function(e){return s(e)&&"input"===e.tagName.toLowerCase()}(e)&&("submit"===e.type||"image"===e.type)){let i=e.form;if(null==i)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');n=r.method||e.getAttribute("formmethod")||i.getAttribute("method")||c,o=r.action||e.getAttribute("formaction")||i.getAttribute("action")||t,a=r.encType||e.getAttribute("formenctype")||i.getAttribute("enctype")||l,u=new FormData(i),e.name&&u.set(e.name,e.value)}else{if(s(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');if(n=r.method||c,o=r.action||t,a=r.encType||l,e instanceof FormData)u=e;else if(u=new FormData,e instanceof URLSearchParams)for(let[t,r]of e)u.append(t,r);else if(null!=e)for(let t of Object.keys(e))u.append(t,e[t])}var i;let{protocol:f,host:d}=window.location;return{url:new URL(o,f+"//"+d),method:n,encType:a,formData:u}}const m=["onClick","reloadDocument","replace","state","target","to","resetScroll"],b=["aria-current","caseSensitive","className","end","style","to","children"],p=["replace","method","action","onSubmit","fetcherKey","routeId"];const y=a.forwardRef((function(e,t){let{onClick:n,reloadDocument:o,replace:c,state:l,target:s,to:f,resetScroll:d}=e,b=i(e,m),p=r.useHref(f),y=R(f,{replace:c,state:l,target:s,resetScroll:d});return a.createElement("a",u({},b,{href:p,onClick:function(e){n&&n(e),e.defaultPrevented||o||y(e)},ref:t,target:s}))})),h=a.forwardRef((function(e,t){let o,{"aria-current":c="page",caseSensitive:l=!1,className:s="",end:f=!1,style:d,to:m,children:p}=e,h=i(e,b),g=r.useResolvedPath(m),v=r.useMatch({path:g.pathname,end:f,caseSensitive:l}),R=a.useContext(r.UNSAFE_DataRouterStateContext),P=null==R?void 0:R.navigation.location,w=r.useResolvedPath(P||""),O=null!=a.useMemo((()=>P?n.matchPath({path:g.pathname,end:f,caseSensitive:l},w.pathname):null),[P,g.pathname,l,f,w.pathname]),j=null!=v,S=j?c:void 0;o="function"==typeof s?s({isActive:j,isPending:O}):[s,j?"active":null,O?"pending":null].filter(Boolean).join(" ");let E="function"==typeof d?d({isActive:j,isPending:O}):d;return a.createElement(y,u({},h,{"aria-current":S,className:o,ref:t,style:E,to:m}),"function"==typeof p?p({isActive:j,isPending:O}):p)})),g=a.forwardRef(((e,t)=>a.createElement(v,u({},e,{ref:t})))),v=a.forwardRef(((e,t)=>{let{replace:r,method:n=c,action:o=".",onSubmit:l,fetcherKey:s,routeId:f}=e,d=i(e,p),m=P(s,f),b="get"===n.toLowerCase()?"get":"post",y=w(o);return a.createElement("form",u({ref:t,method:b,action:y,onSubmit:e=>{if(l&&l(e),e.defaultPrevented)return;e.preventDefault();let t=e.nativeEvent.submitter;m(t||e.currentTarget,{method:n,replace:r})}},d))}));function R(e,t){let{target:n,replace:o,state:u,resetScroll:i}=void 0===t?{}:t,c=r.useNavigate(),l=r.useLocation(),s=r.useResolvedPath(e);return a.useCallback((t=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(t,n)){t.preventDefault();let n=void 0!==o?o:r.createPath(l)===r.createPath(s);c(e,{replace:n,state:u,resetScroll:i})}}),[l,c,s,o,u,n,e,i])}function P(e,t){let o=a.useContext(r.UNSAFE_DataRouterContext),u=w();return a.useCallback((function(r,a){if(void 0===a&&(a={}),null==o&&n.invariant(!1),"undefined"==typeof document)throw new Error("You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.");let{method:i,encType:c,formData:l,url:s}=d(r,u,a),f=s.pathname+s.search,m={replace:null!=a.replace?!0===a.replace:"get"!==i,formData:l,formMethod:i,formEncType:c};e?(null==t&&n.invariant(!1),o.fetch(e,t,f,m)):o.navigate(f,m)}),[u,o,e,t])}function w(e){void 0===e&&(e=".");let t=a.useContext(r.UNSAFE_RouteContext);t||n.invariant(!1);let[o]=t.matches.slice(-1),{pathname:u,search:i}=r.useResolvedPath(e);return"."===e&&o.route.index&&(i=i?i.replace(/^\?/,"?index&"):"?index"),u+i}let O=0;const j="react-router-scroll-positions";let S={};Object.defineProperty(e,"DataMemoryRouter",{enumerable:!0,get:function(){return r.DataMemoryRouter}}),Object.defineProperty(e,"MemoryRouter",{enumerable:!0,get:function(){return r.MemoryRouter}}),Object.defineProperty(e,"Navigate",{enumerable:!0,get:function(){return r.Navigate}}),Object.defineProperty(e,"NavigationType",{enumerable:!0,get:function(){return r.NavigationType}}),Object.defineProperty(e,"Outlet",{enumerable:!0,get:function(){return r.Outlet}}),Object.defineProperty(e,"Route",{enumerable:!0,get:function(){return r.Route}}),Object.defineProperty(e,"Router",{enumerable:!0,get:function(){return r.Router}}),Object.defineProperty(e,"Routes",{enumerable:!0,get:function(){return r.Routes}}),Object.defineProperty(e,"UNSAFE_DataRouterContext",{enumerable:!0,get:function(){return r.UNSAFE_DataRouterContext}}),Object.defineProperty(e,"UNSAFE_DataRouterStateContext",{enumerable:!0,get:function(){return r.UNSAFE_DataRouterStateContext}}),Object.defineProperty(e,"UNSAFE_LocationContext",{enumerable:!0,get:function(){return r.UNSAFE_LocationContext}}),Object.defineProperty(e,"UNSAFE_NavigationContext",{enumerable:!0,get:function(){return r.UNSAFE_NavigationContext}}),Object.defineProperty(e,"UNSAFE_RouteContext",{enumerable:!0,get:function(){return r.UNSAFE_RouteContext}}),Object.defineProperty(e,"createPath",{enumerable:!0,get:function(){return r.createPath}}),Object.defineProperty(e,"createRoutesFromChildren",{enumerable:!0,get:function(){return r.createRoutesFromChildren}}),Object.defineProperty(e,"generatePath",{enumerable:!0,get:function(){return r.generatePath}}),Object.defineProperty(e,"isRouteErrorResponse",{enumerable:!0,get:function(){return r.isRouteErrorResponse}}),Object.defineProperty(e,"json",{enumerable:!0,get:function(){return r.json}}),Object.defineProperty(e,"matchPath",{enumerable:!0,get:function(){return r.matchPath}}),Object.defineProperty(e,"matchRoutes",{enumerable:!0,get:function(){return r.matchRoutes}}),Object.defineProperty(e,"parsePath",{enumerable:!0,get:function(){return r.parsePath}}),Object.defineProperty(e,"redirect",{enumerable:!0,get:function(){return r.redirect}}),Object.defineProperty(e,"renderMatches",{enumerable:!0,get:function(){return r.renderMatches}}),Object.defineProperty(e,"resolvePath",{enumerable:!0,get:function(){return r.resolvePath}}),Object.defineProperty(e,"useActionData",{enumerable:!0,get:function(){return r.useActionData}}),Object.defineProperty(e,"useHref",{enumerable:!0,get:function(){return r.useHref}}),Object.defineProperty(e,"useInRouterContext",{enumerable:!0,get:function(){return r.useInRouterContext}}),Object.defineProperty(e,"useLoaderData",{enumerable:!0,get:function(){return r.useLoaderData}}),Object.defineProperty(e,"useLocation",{enumerable:!0,get:function(){return r.useLocation}}),Object.defineProperty(e,"useMatch",{enumerable:!0,get:function(){return r.useMatch}}),Object.defineProperty(e,"useMatches",{enumerable:!0,get:function(){return r.useMatches}}),Object.defineProperty(e,"useNavigate",{enumerable:!0,get:function(){return r.useNavigate}}),Object.defineProperty(e,"useNavigation",{enumerable:!0,get:function(){return r.useNavigation}}),Object.defineProperty(e,"useNavigationType",{enumerable:!0,get:function(){return r.useNavigationType}}),Object.defineProperty(e,"useOutlet",{enumerable:!0,get:function(){return r.useOutlet}}),Object.defineProperty(e,"useOutletContext",{enumerable:!0,get:function(){return r.useOutletContext}}),Object.defineProperty(e,"useParams",{enumerable:!0,get:function(){return r.useParams}}),Object.defineProperty(e,"useRenderDataRouter",{enumerable:!0,get:function(){return r.useRenderDataRouter}}),Object.defineProperty(e,"useResolvedPath",{enumerable:!0,get:function(){return r.useResolvedPath}}),Object.defineProperty(e,"useRevalidator",{enumerable:!0,get:function(){return r.useRevalidator}}),Object.defineProperty(e,"useRouteError",{enumerable:!0,get:function(){return r.useRouteError}}),Object.defineProperty(e,"useRouteLoaderData",{enumerable:!0,get:function(){return r.useRouteLoaderData}}),Object.defineProperty(e,"useRoutes",{enumerable:!0,get:function(){return r.useRoutes}}),e.BrowserRouter=function(e){let{basename:t,children:o,window:u}=e,i=a.useRef();null==i.current&&(i.current=n.createBrowserHistory({window:u,v5Compat:!0}));let c=i.current,[l,s]=a.useState({action:c.action,location:c.location});return a.useLayoutEffect((()=>c.listen(s)),[c]),a.createElement(r.Router,{basename:t,children:o,location:l.location,navigationType:l.action,navigator:c})},e.DataBrowserRouter=function(e){let{children:t,fallbackElement:o,hydrationData:a,routes:u,window:i}=e;return r.useRenderDataRouter({children:t,fallbackElement:o,routes:u,createRouter:e=>n.createBrowserRouter({routes:e,hydrationData:a,window:i})})},e.DataHashRouter=function(e){let{children:t,hydrationData:o,fallbackElement:a,routes:u,window:i}=e;return r.useRenderDataRouter({children:t,fallbackElement:a,routes:u,createRouter:e=>n.createHashRouter({routes:e,hydrationData:o,window:i})})},e.Form=g,e.HashRouter=function(e){let{basename:t,children:o,window:u}=e,i=a.useRef();null==i.current&&(i.current=n.createHashHistory({window:u,v5Compat:!0}));let c=i.current,[l,s]=a.useState({action:c.action,location:c.location});return a.useLayoutEffect((()=>c.listen(s)),[c]),a.createElement(r.Router,{basename:t,children:o,location:l.location,navigationType:l.action,navigator:c})},e.Link=y,e.NavLink=h,e.ScrollRestoration=function(e){let{getKey:t,storageKey:o}=e;return function(e){let{getKey:t,storageKey:o}=void 0===e?{}:e,u=r.useLocation(),i=a.useContext(r.UNSAFE_DataRouterContext),c=a.useContext(r.UNSAFE_DataRouterStateContext);(null==i||null==c)&&n.invariant(!1);let{restoreScrollPosition:l,resetScrollPosition:s}=c;a.useEffect((()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"})),[]),f=a.useCallback((()=>{if("idle"===(null==c?void 0:c.navigation.state)){let e=(t?t(c.location,c.matches):null)||c.location.key;S[e]=window.scrollY}sessionStorage.setItem(o||j,JSON.stringify(S)),window.history.scrollRestoration="auto"}),[o,t,c.navigation.state,c.location,c.matches]),a.useEffect((()=>(window.addEventListener("beforeunload",f),()=>{window.removeEventListener("beforeunload",f)})),[f]),a.useLayoutEffect((()=>{try{let e=sessionStorage.getItem(o||j);e&&(S=JSON.parse(e))}catch(e){}}),[o]),a.useLayoutEffect((()=>{let e=null==i?void 0:i.enableScrollRestoration(S,(()=>window.scrollY),t);return()=>e&&e()}),[i,t]),a.useLayoutEffect((()=>{if(!1!==l)if("number"!=typeof l){if(u.hash){let e=document.getElementById(u.hash.slice(1));if(e)return void e.scrollIntoView()}!1!==s&&window.scrollTo(0,0)}else window.scrollTo(0,l)}),[u,l,s]);var f}({getKey:t,storageKey:o}),null},e.createSearchParams=f,e.unstable_HistoryRouter=function(e){let{basename:t,children:n,history:o}=e;const[u,i]=a.useState({action:o.action,location:o.location});return a.useLayoutEffect((()=>o.listen(i)),[o]),a.createElement(r.Router,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:o})},e.useFetcher=function(){var e;let t=a.useContext(r.UNSAFE_DataRouterContext);t||n.invariant(!1);let o=a.useContext(r.UNSAFE_RouteContext);o||n.invariant(!1);let i=null==(e=o.matches[o.matches.length-1])?void 0:e.route.id;null==i&&n.invariant(!1);let[c]=a.useState((()=>String(++O))),[l]=a.useState((()=>(i||n.invariant(!1),function(e,t){return a.forwardRef(((r,n)=>a.createElement(v,u({},r,{ref:n,fetcherKey:e,routeId:t}))))}(c,i)))),[s]=a.useState((()=>e=>{t||n.invariant(!1),i||n.invariant(!1),t.fetch(c,i,e)})),f=P(c,i),d=t.getFetcher(c),m=a.useMemo((()=>u({Form:l,submit:f,load:s},d)),[d,l,f,s]);return a.useEffect((()=>()=>{t?t.deleteFetcher(c):console.warn("No fetcher available to clean up from useFetcher()")}),[t,c]),m},e.useFetchers=function(){let e=a.useContext(r.UNSAFE_DataRouterStateContext);return e||n.invariant(!1),[...e.fetchers.values()]},e.useFormAction=w,e.useLinkClickHandler=R,e.useSearchParams=function(e){let t=a.useRef(f(e)),n=r.useLocation(),o=a.useMemo((()=>function(e,t){let r=f(e);for(let e of t.keys())r.has(e)||t.getAll(e).forEach((t=>{r.append(e,t)}));return r}(n.search,t.current)),[n.search]),u=r.useNavigate(),i=a.useCallback(((e,t)=>{const r=f("function"==typeof e?e(o):e);u("?"+r,t)}),[u,o]);return[o,i]},e.useSubmit=function(){return P()},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
| //# sourceMappingURL=react-router-dom.production.min.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"react-router-dom.production.min.js","sources":["../../dom.ts","../../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_resetModuleScope,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n router.fetch(fetcherKey, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return <FormImpl {...props} ref={ref} fetcherKey={fetcherKey} />;\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let [fetcherKey] = React.useState(() => String(++fetcherId));\n let [Form] = React.useState(() => createFetcherForm(fetcherKey));\n let [load] = React.useState(() => (href: string) => {\n invariant(router, `No router available for fetcher.load()`);\n router.fetch(fetcherKey, href);\n });\n let submit = useSubmitImpl(fetcherKey);\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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n//#endregion\n"],"names":["defaultMethod","defaultEncType","isHtmlElement","object","tagName","createSearchParams","init","URLSearchParams","Array","isArray","Object","keys","reduce","memo","key","value","concat","map","v","getFormSubmissionInfo","target","defaultAction","options","method","action","encType","formData","toLowerCase","submissionTrigger","getAttribute","FormData","name","append","isButtonElement","isInputElement","type","form","Error","set","protocol","host","window","location","url","URL","Link","React","forwardRef","ref","onClick","reloadDocument","replace","state","to","resetScroll","_ref6","rest","_objectWithoutPropertiesLoose","_excluded","href","useHref","internalOnClick","useLinkClickHandler","createElement","_extends","event","defaultPrevented","NavLink","className","ariaCurrentProp","caseSensitive","classNameProp","end","style","styleProp","children","_ref7","_excluded2","path","useResolvedPath","match","useMatch","pathname","routerState","useContext","UNSAFE_DataRouterStateContext","nextLocation","navigation","nextPath","isPending","useMemo","matchPath","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","_ref8","forwardedRef","onSubmit","fetcherKey","_excluded3","submit","useSubmitImpl","formMethod","formAction","useFormAction","preventDefault","submitter","nativeEvent","currentTarget","_temp","replaceProp","navigate","useNavigate","useLocation","useCallback","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","shouldProcessLinkClick","createPath","router","UNSAFE_DataRouterContext","invariant","document","search","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","matches","slice","route","index","fetcherId","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","_ref3","basename","historyRef","useRef","current","createBrowserHistory","v5Compat","history","setState","useState","useLayoutEffect","listen","Router","navigationType","navigator","_ref","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","_ref2","createHashRouter","_ref4","createHashHistory","_ref9","getKey","storageKey","_temp2","restoreScrollPosition","resetScrollPosition","useEffect","scrollRestoration","callback","scrollY","sessionStorage","setItem","JSON","stringify","addEventListener","removeEventListener","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","hash","el","getElementById","scrollIntoView","scrollTo","useScrollRestoration","_ref5","String","createFetcherForm","load","fetcher","getFetcher","fetcherWithComponents","deleteFetcher","console","warn","fetchers","values","defaultInit","defaultSearchParamsRef","searchParams","locationSearch","defaultSearchParams","has","getAll","forEach","getSearchParamsForLocation","setSearchParams","nextInit","navigateOptions","newSearchParams"],"mappings":"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"} | ||
| {"version":3,"file":"react-router-dom.production.min.js","sources":["../../dom.ts","../../index.tsx"],"sourcesContent":["import type { FormEncType, FormMethod } from \"@remix-run/router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"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\n) {\n let searchParams = createSearchParams(locationSearch);\n\n for (let key of defaultSearchParams.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\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?: FormMethod;\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 * Note: It is assumed the path is already resolved. If you need to resolve a\n * relative path, use `useFormAction`.\n */\n action?: string;\n\n /**\n * The action URL 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\nexport function getFormSubmissionInfo(\n target:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\n defaultAction: string,\n options: SubmitOptions\n): {\n url: URL;\n method: string;\n encType: string;\n formData: FormData;\n} {\n let method: string;\n let action: string;\n let encType: string;\n let formData: FormData;\n\n if (isFormElement(target)) {\n let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n options as any\n ).submissionTrigger;\n\n method = options.method || target.getAttribute(\"method\") || defaultMethod;\n action = options.action || target.getAttribute(\"action\") || defaultAction;\n encType =\n options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n formData = new FormData(target);\n\n if (submissionTrigger && submissionTrigger.name) {\n formData.append(submissionTrigger.name, submissionTrigger.value);\n }\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 method =\n options.method ||\n target.getAttribute(\"formmethod\") ||\n form.getAttribute(\"method\") ||\n defaultMethod;\n action =\n options.action ||\n target.getAttribute(\"formaction\") ||\n form.getAttribute(\"action\") ||\n defaultAction;\n encType =\n options.encType ||\n target.getAttribute(\"formenctype\") ||\n form.getAttribute(\"enctype\") ||\n defaultEncType;\n\n formData = new FormData(form);\n\n // Include name + value from a <button>\n if (target.name) {\n formData.set(target.name, target.value);\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 = options.method || defaultMethod;\n action = options.action || defaultAction;\n encType = options.encType || defaultEncType;\n\n if (target instanceof FormData) {\n formData = target;\n } else {\n formData = new FormData();\n\n if (target instanceof URLSearchParams) {\n for (let [name, value] of target) {\n formData.append(name, value);\n }\n } else if (target != null) {\n for (let name of Object.keys(target)) {\n formData.append(name, target[name]);\n }\n }\n }\n }\n\n let { protocol, host } = window.location;\n let url = new URL(action, `${protocol}//${host}`);\n\n return { url, method, encType, formData };\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 { NavigateOptions, To } from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatch,\n useNavigate,\n useRenderDataRouter,\n useResolvedPath,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n RouteObject,\n} from \"@remix-run/router\";\nimport {\n createBrowserHistory,\n createHashHistory,\n createBrowserRouter,\n createHashRouter,\n invariant,\n matchPath,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\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 { ParamKeyValuePair, URLSearchParamsInit };\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n DataMemoryRouterProps,\n DataRouteMatch,\n Fetcher,\n Hash,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n DataMemoryRouter,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n Routes,\n createPath,\n createRoutesFromChildren,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\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_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n useRenderDataRouter,\n} from \"react-router\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface DataBrowserRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataBrowserRouter({\n children,\n fallbackElement,\n hydrationData,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createBrowserRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface DataHashRouterProps {\n children?: React.ReactNode;\n hydrationData?: HydrationState;\n fallbackElement?: React.ReactNode;\n routes?: RouteObject[];\n window?: Window;\n}\n\nexport function DataHashRouter({\n children,\n hydrationData,\n fallbackElement,\n routes,\n window,\n}: DataBrowserRouterProps): React.ReactElement {\n return useRenderDataRouter({\n children,\n fallbackElement,\n routes,\n createRouter: (routes) =>\n createHashRouter({\n routes,\n hydrationData,\n window,\n }),\n });\n}\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\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 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, window }: 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, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 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({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\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 resetScroll?: boolean;\n to: To;\n}\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 reloadDocument,\n replace,\n state,\n target,\n to,\n resetScroll,\n ...rest\n },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n resetScroll,\n });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n 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);\n let match = useMatch({ path: path.pathname, end, caseSensitive });\n\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let nextLocation = routerState?.navigation.location;\n let nextPath = useResolvedPath(nextLocation || \"\");\n let nextMatch = React.useMemo(\n () =>\n nextLocation\n ? matchPath(\n { path: path.pathname, end, caseSensitive },\n nextPath.pathname\n )\n : null,\n [nextLocation, path.pathname, caseSensitive, end, nextPath.pathname]\n );\n\n let isPending = nextMatch != null;\n let isActive = match != null;\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 FormProps 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?: FormMethod;\n\n /**\n * Normal `<form action>` but supports React Router's relative paths.\n */\n action?: string;\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 * 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\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 return <FormImpl {...props} 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 fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n (\n {\n replace,\n method = defaultMethod,\n action = \".\",\n onSubmit,\n fetcherKey,\n routeId,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action);\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 submit(submitter || event.currentTarget, { method, replace });\n };\n\n return (\n <form\n ref={forwardedRef}\n method={formMethod}\n action={formAction}\n onSubmit={submitHandler}\n {...props}\n />\n );\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ninterface 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\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 resetScroll,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n resetScroll?: boolean;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\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 explcitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, resetScroll });\n }\n },\n [location, navigate, path, replaceProp, state, target, to, resetScroll]\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\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n 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 navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype 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:\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null,\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 * 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 return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction {\n let router = React.useContext(UNSAFE_DataRouterContext);\n let defaultAction = useFormAction();\n\n return React.useCallback(\n (target, options = {}) => {\n invariant(\n router != null,\n \"useSubmit() must be used within a <DataRouter>\"\n );\n\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 let { method, encType, formData, url } = getFormSubmissionInfo(\n target,\n defaultAction,\n options\n );\n\n let href = url.pathname + url.search;\n let opts = {\n // If replace is not specified, we'll default to false for GET and\n // true otherwise\n replace:\n options.replace != null ? options.replace === true : method !== \"get\",\n formData,\n formMethod: method as FormMethod,\n formEncType: encType as FormEncType,\n };\n if (fetcherKey) {\n invariant(routeId != null, \"No routeId available for useFetcher()\");\n router.fetch(fetcherKey, routeId, href, opts);\n } else {\n router.navigate(href, opts);\n }\n },\n [defaultAction, router, fetcherKey, routeId]\n );\n}\n\nexport function useFormAction(action = \".\"): string {\n let routeContext = React.useContext(UNSAFE_RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n let [match] = routeContext.matches.slice(-1);\n let { pathname, search } = useResolvedPath(action);\n\n if (action === \".\" && match.route.index) {\n search = search ? search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n\n return pathname + search;\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n (props, ref) => {\n return (\n <FormImpl\n {...props}\n ref={ref}\n fetcherKey={fetcherKey}\n routeId={routeId}\n />\n );\n }\n );\n if (__DEV__) {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n}\n\nlet fetcherId = 0;\n\ntype FetcherWithComponents<TData> = Fetcher<TData> & {\n Form: ReturnType<typeof createFetcherForm>;\n submit: ReturnType<typeof useSubmitImpl>;\n load: (href: string) => void;\n};\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 = React.useContext(UNSAFE_DataRouterContext);\n invariant(router, `useFetcher must be used within a DataRouter`);\n\n let route = React.useContext(UNSAFE_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 = useSubmitImpl(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 fetcher 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 = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(state, `useFetchers must be used within a DataRouter`);\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 DataRouter, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n getKey,\n storageKey,\n}: {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n} = {}) {\n let location = useLocation();\n let router = React.useContext(UNSAFE_DataRouterContext);\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n\n invariant(\n router != null && state != null,\n \"useScrollRestoration must be used within a DataRouter\"\n );\n let { restoreScrollPosition, resetScrollPosition } = state;\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 unload\n useBeforeUnload(\n React.useCallback(() => {\n if (state?.navigation.state === \"idle\") {\n let key =\n (getKey ? getKey(state.location, state.matches) : null) ||\n state.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 }, [\n storageKey,\n getKey,\n state.navigation.state,\n state.location,\n state.matches,\n ])\n );\n\n // Read in any saved scroll locations\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 React.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, getKey]);\n\n // Restore scrolling when state.restoreScrollPosition changes\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(location.hash.slice(1));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n\n // Opt out of scroll reset if this link requested it\n if (resetScrollPosition === false) {\n return;\n }\n\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, resetScrollPosition]);\n}\n\nfunction useBeforeUnload(callback: () => any): void {\n React.useEffect(() => {\n window.addEventListener(\"beforeunload\", callback);\n return () => {\n window.removeEventListener(\"beforeunload\", callback);\n };\n }, [callback]);\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n//#endregion\n"],"names":["defaultMethod","defaultEncType","isHtmlElement","object","tagName","createSearchParams","init","URLSearchParams","Array","isArray","Object","keys","reduce","memo","key","value","concat","map","v","getFormSubmissionInfo","target","defaultAction","options","method","action","encType","formData","toLowerCase","submissionTrigger","getAttribute","FormData","name","append","isButtonElement","isInputElement","type","form","Error","set","protocol","host","window","location","url","URL","Link","React","forwardRef","ref","onClick","reloadDocument","replace","state","to","resetScroll","_ref6","rest","_objectWithoutPropertiesLoose","_excluded","href","useHref","internalOnClick","useLinkClickHandler","createElement","_extends","event","defaultPrevented","NavLink","className","ariaCurrentProp","caseSensitive","classNameProp","end","style","styleProp","children","_ref7","_excluded2","path","useResolvedPath","match","useMatch","pathname","routerState","useContext","UNSAFE_DataRouterStateContext","nextLocation","navigation","nextPath","isPending","useMemo","matchPath","isActive","ariaCurrent","undefined","filter","Boolean","join","Form","props","FormImpl","_ref8","forwardedRef","onSubmit","fetcherKey","routeId","_excluded3","submit","useSubmitImpl","formMethod","formAction","useFormAction","preventDefault","submitter","nativeEvent","currentTarget","_temp","replaceProp","navigate","useNavigate","useLocation","useCallback","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","shouldProcessLinkClick","createPath","router","UNSAFE_DataRouterContext","invariant","document","search","opts","formEncType","fetch","routeContext","UNSAFE_RouteContext","matches","slice","route","index","fetcherId","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","_ref3","basename","historyRef","useRef","current","createBrowserHistory","v5Compat","history","setState","useState","useLayoutEffect","listen","Router","navigationType","navigator","_ref","fallbackElement","hydrationData","routes","useRenderDataRouter","createRouter","createBrowserRouter","_ref2","createHashRouter","_ref4","createHashHistory","_ref9","getKey","storageKey","_temp2","restoreScrollPosition","resetScrollPosition","useEffect","scrollRestoration","callback","scrollY","sessionStorage","setItem","JSON","stringify","addEventListener","removeEventListener","sessionPositions","getItem","parse","e","disableScrollRestoration","enableScrollRestoration","hash","el","getElementById","scrollIntoView","scrollTo","useScrollRestoration","_ref5","_route$matches","length","id","String","createFetcherForm","load","fetcher","getFetcher","fetcherWithComponents","deleteFetcher","console","warn","fetchers","values","defaultInit","defaultSearchParamsRef","searchParams","locationSearch","defaultSearchParams","has","getAll","forEach","getSearchParamsForLocation","setSearchParams","nextInit","navigateOptions","newSearchParams"],"mappings":"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"} |
+2
-2
| { | ||
| "name": "react-router-dom", | ||
| "version": "6.4.0-pre.6", | ||
| "version": "6.4.0-pre.7", | ||
| "description": "Declarative routing for React web applications", | ||
@@ -26,3 +26,3 @@ "keywords": [ | ||
| "dependencies": { | ||
| "react-router": "6.4.0-pre.6" | ||
| "react-router": "6.4.0-pre.7" | ||
| }, | ||
@@ -29,0 +29,0 @@ "devDependencies": { |
+16
-15
@@ -10,17 +10,17 @@ 'use strict'; | ||
| function _interopNamespace(e) { | ||
| if (e && e.__esModule) return e; | ||
| var n = Object.create(null); | ||
| if (e) { | ||
| Object.keys(e).forEach(function (k) { | ||
| if (k !== 'default') { | ||
| var d = Object.getOwnPropertyDescriptor(e, k); | ||
| Object.defineProperty(n, k, d.get ? d : { | ||
| enumerable: true, | ||
| get: function () { return e[k]; } | ||
| if (e && e.__esModule) return e; | ||
| var n = Object.create(null); | ||
| if (e) { | ||
| Object.keys(e).forEach(function (k) { | ||
| if (k !== 'default') { | ||
| var d = Object.getOwnPropertyDescriptor(e, k); | ||
| Object.defineProperty(n, k, d.get ? d : { | ||
| enumerable: true, | ||
| get: function () { return e[k]; } | ||
| }); | ||
| } | ||
| }); | ||
| } | ||
| }); | ||
| } | ||
| n["default"] = e; | ||
| return Object.freeze(n); | ||
| } | ||
| n["default"] = e; | ||
| return Object.freeze(n); | ||
| } | ||
@@ -34,2 +34,3 @@ | ||
| */ | ||
| function StaticRouter({ | ||
@@ -62,3 +63,2 @@ basename, | ||
| } | ||
| /** | ||
@@ -68,2 +68,3 @@ * A Data Router that may not navigate to any other location. This is useful | ||
| */ | ||
| function DataStaticRouter({ | ||
@@ -70,0 +71,0 @@ data, |
+1
-2
@@ -9,3 +9,2 @@ import * as React from 'react'; | ||
| */ | ||
| function StaticRouter({ | ||
@@ -38,2 +37,3 @@ basename, | ||
| } | ||
| /** | ||
@@ -43,3 +43,2 @@ * A Data Router that may not navigate to any other location. This is useful | ||
| */ | ||
| function DataStaticRouter({ | ||
@@ -46,0 +45,0 @@ data, |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
422815
2.49%3197
1.04%37
15.63%+ Added
+ Added
- Removed
- Removed
Updated