UNPKG

13.1 kBJavaScriptView Raw
1/**
2 * React Router v6.9.0
3 *
4 * Copyright (c) Remix Software Inc.
5 *
6 * This source code is licensed under the MIT license found in the
7 * LICENSE.md file in the root directory of this source tree.
8 *
9 * @license MIT
10 */
11import{UNSAFE_invariant as e,joinPaths as t,matchPath as r,UNSAFE_getPathContributingMatches as n,resolveTo as o,parsePath as a,matchRoutes as i,Action as l,isRouteErrorResponse as u,createMemoryHistory as s,stripBasename as c,AbortedDeferredError as d,createRouter as p}from"@remix-run/router";export{AbortedDeferredError,Action as NavigationType,createPath,defer,generatePath,isRouteErrorResponse,json,matchPath,matchRoutes,parsePath,redirect,resolvePath}from"@remix-run/router";import*as m from"react";const h="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},{useState:f,useEffect:v,useLayoutEffect:E,useDebugValue:g}=m;function x(e){const t=e.getSnapshot,r=e.value;try{const e=t();return!h(r,e)}catch(n){return!0}}const y=!!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement)?function(e,t,r){return t()}:function(e,t,r){const n=t(),[{inst:o},a]=f({inst:{value:n,getSnapshot:t}});return E((()=>{o.value=n,o.getSnapshot=t,x(o)&&a({inst:o})}),[e,n,t]),v((()=>{x(o)&&a({inst:o});return e((()=>{x(o)&&a({inst:o})}))}),[e]),g(n),n},C="useSyncExternalStore"in m?m.useSyncExternalStore:y,b=m.createContext(null),S=m.createContext(null),R=m.createContext(null),B=m.createContext(null),P=m.createContext(null),U=m.createContext({outlet:null,matches:[]}),D=m.createContext(null);function k(r,{relative:n}={}){_()||e(!1);let{basename:o,navigator:a}=m.useContext(B),{hash:i,pathname:l,search:u}=T(r,{relative:n}),s=l;return"/"!==o&&(s="/"===l?o:t([o,l])),a.createHref({pathname:s,search:u,hash:i})}function _(){return null!=m.useContext(P)}function L(){return _()||e(!1),m.useContext(P).location}function O(){return m.useContext(P).navigationType}function N(t){_()||e(!1);let{pathname:n}=L();return m.useMemo((()=>r(t,n)),[n,t])}function j(){_()||e(!1);let{basename:r,navigator:a}=m.useContext(B),{matches:i}=m.useContext(U),{pathname:l}=L(),u=JSON.stringify(n(i).map((e=>e.pathnameBase))),s=m.useRef(!1);return m.useEffect((()=>{s.current=!0})),m.useCallback(((e,n={})=>{if(!s.current)return;if("number"==typeof e)return void a.go(e);let i=o(e,JSON.parse(u),l,"path"===n.relative);"/"!==r&&(i.pathname="/"===i.pathname?r:t([r,i.pathname])),(n.replace?a.replace:a.push)(i,n.state,n)}),[r,a,u,l])}const A=m.createContext(null);function F(){return m.useContext(A)}function w(e){let t=m.useContext(U).outlet;return t?m.createElement(A.Provider,{value:e},t):t}function M(){let{matches:e}=m.useContext(U),t=e[e.length-1];return t?t.params:{}}function T(e,{relative:t}={}){let{matches:r}=m.useContext(U),{pathname:a}=L(),i=JSON.stringify(n(r).map((e=>e.pathnameBase)));return m.useMemo((()=>o(e,JSON.parse(i),a,"path"===t)),[e,i,a,t])}function I(r,n){_()||e(!1);let{navigator:o}=m.useContext(B),u=m.useContext(S),{matches:s}=m.useContext(U),c=s[s.length-1],d=c?c.params:{};!c||c.pathname;let p=c?c.pathnameBase:"/";c&&c.route;let h,f=L();if(n){let t="string"==typeof n?a(n):n;"/"===p||t.pathname?.startsWith(p)||e(!1),h=t}else h=f;let v=h.pathname||"/",E="/"===p?v:v.slice(p.length)||"/",g=i(r,{pathname:E}),x=$(g&&g.map((e=>Object.assign({},e,{params:Object.assign({},d,e.params),pathname:t([p,o.encodeLocation?o.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?p:t([p,o.encodeLocation?o.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),s,u||void 0);return n&&x?m.createElement(P.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...h},navigationType:l.Pop}},x):x}function J(){let e=re(),t=u(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,n={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},t),r?m.createElement("pre",{style:n},r):null,null)}class z extends m.Component{constructor(e){super(e),this.state={location:e.location,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location?{error:e.error,location:e.location}:{error:e.error||t.error,location:t.location}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return this.state.error?m.createElement(U.Provider,{value:this.props.routeContext},m.createElement(D.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function H({routeContext:e,match:t,children:r}){let n=m.useContext(b);return n&&n.static&&n.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(n.staticContext._deepestRenderedBoundaryId=t.route.id),m.createElement(U.Provider,{value:e},r)}function $(t,r=[],n){if(null==t){if(!n?.errors)return null;t=n.matches}let o=t,a=n?.errors;if(null!=a){let t=o.findIndex((e=>e.route.id&&a?.[e.route.id]));t>=0||e(!1),o=o.slice(0,Math.min(o.length,t+1))}return o.reduceRight(((e,t,i)=>{let l=t.route.id?a?.[t.route.id]:null,u=null;n&&(u=t.route.ErrorBoundary?m.createElement(t.route.ErrorBoundary,null):t.route.errorElement?t.route.errorElement:m.createElement(J,null));let s=r.concat(o.slice(0,i+1)),c=()=>{let r=e;return l?r=u:t.route.Component?r=m.createElement(t.route.Component,null):t.route.element&&(r=t.route.element),m.createElement(H,{match:t,routeContext:{outlet:e,matches:s},children:r})};return n&&(t.route.ErrorBoundary||t.route.errorElement||0===i)?m.createElement(z,{location:n.location,component:u,error:l,children:c(),routeContext:{outlet:null,matches:s}}):c()}),null)}var V,W;function Y(t){let r=m.useContext(b);return r||e(!1),r}function q(t){let r=m.useContext(S);return r||e(!1),r}function G(t){let r=function(t){let r=m.useContext(U);return r||e(!1),r}(),n=r.matches[r.matches.length-1];return n.route.id||e(!1),n.route.id}function K(){return q(W.UseNavigation).navigation}function Q(){let e=Y(V.UseRevalidator),t=q(W.UseRevalidator);return{revalidate:e.router.revalidate,state:t.revalidation}}function X(){let{matches:e,loaderData:t}=q(W.UseMatches);return m.useMemo((()=>e.map((e=>{let{pathname:r,params:n}=e;return{id:e.route.id,pathname:r,params:n,data:t[e.route.id],handle:e.route.handle}}))),[e,t])}function Z(){let e=q(W.UseLoaderData),t=G(W.UseLoaderData);if(!e.errors||null==e.errors[t])return e.loaderData[t];console.error(`You cannot \`useLoaderData\` in an errorElement (routeId: ${t})`)}function ee(e){return q(W.UseRouteLoaderData).loaderData[e]}function te(){let t=q(W.UseActionData);return m.useContext(U)||e(!1),Object.values(t?.actionData||{})[0]}function re(){let e=m.useContext(D),t=q(W.UseRouteError),r=G(W.UseRouteError);return e||t.errors?.[r]}function ne(){return m.useContext(R)?._data}function oe(){return m.useContext(R)?._error}!function(e){e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator"}(V||(V={})),function(e){e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator"}(W||(W={}));let ae=0;function ie(e){let{router:t}=Y(V.UseBlocker),r=q(W.UseBlocker),[n]=m.useState((()=>String(++ae))),o=m.useCallback((t=>"function"==typeof e?!!e(t):!!e),[e]),a=t.getBlocker(n,o);return m.useEffect((()=>()=>t.deleteBlocker(n)),[t,n]),r.blockers.get(n)||a}function le({fallbackElement:e,router:t}){let r=m.useCallback((()=>t.state),[t]),n=C(t.subscribe,r,r),o=m.useMemo((()=>({createHref:t.createHref,encodeLocation:t.encodeLocation,go:e=>t.navigate(e),push:(e,r,n)=>t.navigate(e,{state:r,preventScrollReset:n?.preventScrollReset}),replace:(e,r,n)=>t.navigate(e,{replace:!0,state:r,preventScrollReset:n?.preventScrollReset})})),[t]),a=t.basename||"/",i=m.useMemo((()=>({router:t,navigator:o,static:!1,basename:a})),[t,o,a]);return m.createElement(m.Fragment,null,m.createElement(b.Provider,{value:i},m.createElement(S.Provider,{value:n},m.createElement(pe,{basename:t.basename,location:t.state.location,navigationType:t.state.historyAction,navigator:o},t.state.initialized?m.createElement(me,null):e))),null)}function ue({basename:e,children:t,initialEntries:r,initialIndex:n}){let o=m.useRef();null==o.current&&(o.current=s({initialEntries:r,initialIndex:n,v5Compat:!0}));let a=o.current,[i,l]=m.useState({action:a.action,location:a.location});return m.useLayoutEffect((()=>a.listen(l)),[a]),m.createElement(pe,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:a})}function se({to:t,replace:r,state:n,relative:o}){_()||e(!1);let a=m.useContext(S),i=j();return m.useEffect((()=>{a&&"idle"!==a.navigation.state||i(t,{replace:r,state:n,relative:o})})),null}function ce(e){return w(e.context)}function de(t){e(!1)}function pe({basename:t="/",children:r=null,location:n,navigationType:o=l.Pop,navigator:i,static:u=!1}){_()&&e(!1);let s=t.replace(/^\/*/,"/"),d=m.useMemo((()=>({basename:s,navigator:i,static:u})),[s,i,u]);"string"==typeof n&&(n=a(n));let{pathname:p="/",search:h="",hash:f="",state:v=null,key:E="default"}=n,g=m.useMemo((()=>{let e=c(p,s);return null==e?null:{location:{pathname:e,search:h,hash:f,state:v,key:E},navigationType:o}}),[s,p,h,f,v,E,o]);return null==g?null:m.createElement(B.Provider,{value:d},m.createElement(P.Provider,{children:r,value:g}))}function me({children:e,location:t}){let r=m.useContext(b);return I(r&&!e?r.router.routes:xe(e),t)}function he({children:e,errorElement:t,resolve:r}){return m.createElement(Ee,{resolve:r,errorElement:t},m.createElement(ge,null,e))}var fe;!function(e){e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error"}(fe||(fe={}));const ve=new Promise((()=>{}));class Ee extends m.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("<Await> caught the following error during render",e,t)}render(){let{children:e,errorElement:t,resolve:r}=this.props,n=null,o=fe.pending;if(r instanceof Promise)if(this.state.error){o=fe.error;let e=this.state.error;n=Promise.reject().catch((()=>{})),Object.defineProperty(n,"_tracked",{get:()=>!0}),Object.defineProperty(n,"_error",{get:()=>e})}else r._tracked?(n=r,o=void 0!==n._error?fe.error:void 0!==n._data?fe.success:fe.pending):(o=fe.pending,Object.defineProperty(r,"_tracked",{get:()=>!0}),n=r.then((e=>Object.defineProperty(r,"_data",{get:()=>e})),(e=>Object.defineProperty(r,"_error",{get:()=>e}))));else o=fe.success,n=Promise.resolve(),Object.defineProperty(n,"_tracked",{get:()=>!0}),Object.defineProperty(n,"_data",{get:()=>r});if(o===fe.error&&n._error instanceof d)throw ve;if(o===fe.error&&!t)throw n._error;if(o===fe.error)return m.createElement(R.Provider,{value:n,children:t});if(o===fe.success)return m.createElement(R.Provider,{value:n,children:e});throw n}}function ge({children:e}){let t=ne(),r="function"==typeof e?e(t):e;return m.createElement(m.Fragment,null,r)}function xe(t,r=[]){let n=[];return m.Children.forEach(t,((t,o)=>{if(!m.isValidElement(t))return;if(t.type===m.Fragment)return void n.push.apply(n,xe(t.props.children,r));t.type!==de&&e(!1),t.props.index&&t.props.children&&e(!1);let a=[...r,o],i={id:t.props.id||a.join("-"),caseSensitive:t.props.caseSensitive,element:t.props.element,Component:t.props.Component,index:t.props.index,path:t.props.path,loader:t.props.loader,action:t.props.action,errorElement:t.props.errorElement,ErrorBoundary:t.props.ErrorBoundary,hasErrorBoundary:null!=t.props.ErrorBoundary||null!=t.props.errorElement,shouldRevalidate:t.props.shouldRevalidate,handle:t.props.handle,lazy:t.props.lazy};t.props.children&&(i.children=xe(t.props.children,a)),n.push(i)})),n}function ye(e){return $(e)}function Ce(e){return Boolean(e.ErrorBoundary)||Boolean(e.errorElement)}function be(e,t){return p({basename:t?.basename,history:s({initialEntries:t?.initialEntries,initialIndex:t?.initialIndex}),hydrationData:t?.hydrationData,routes:e,detectErrorBoundary:Ce}).initialize()}export{he as Await,ue as MemoryRouter,se as Navigate,ce as Outlet,de as Route,pe as Router,le as RouterProvider,me as Routes,b as UNSAFE_DataRouterContext,S as UNSAFE_DataRouterStateContext,P as UNSAFE_LocationContext,B as UNSAFE_NavigationContext,U as UNSAFE_RouteContext,Ce as UNSAFE_detectErrorBoundary,be as createMemoryRouter,xe as createRoutesFromChildren,xe as createRoutesFromElements,ye as renderMatches,ie as unstable_useBlocker,te as useActionData,oe as useAsyncError,ne as useAsyncValue,k as useHref,_ as useInRouterContext,Z as useLoaderData,L as useLocation,N as useMatch,X as useMatches,j as useNavigate,K as useNavigation,O as useNavigationType,w as useOutlet,F as useOutletContext,M as useParams,T as useResolvedPath,Q as useRevalidator,re as useRouteError,ee as useRouteLoaderData,I as useRoutes};
12//# sourceMappingURL=react-router.production.min.js.map